Schau Dir MeasureString an sowie Graphics.FromBitmap und die Zeichenroutinen vom Graphic Objekt. Einfach ein blankes Bitmap mit gewünschter Größe erzeugen und dann mittels dem Grafikobjekt darauf zeichnen.
Der einfachste Weg waäre, das in eine Bearbeitungsschleife einzubinden.
Immer wenn sich die Sekunde ändert, einen "." ausgeben.
zB
[code]
int sec;
for ( sec=0; ; ){
if ( sec != Sekunde_ermitteln())
printf( ".");
sec = Sekunde_ermitteln();
}
HeftigeArbeit();
}
rtxtb_Ausgabe.SelectionBullet = false; // Aufzählungszeichen und Formatierung in
int[] Tabs = { 200, 50, 10 }; // RichTextBox
rtxtb_Ausgabe.SelectionTabs = Tabs;
Wichtig sind die Tabulatorstellen Tabs, und die Eigenschaft .SelectionTabs = Tabs;
Danach in der Ausgabezeile das \t nicht vergessen, sonst klappts nicht.
rtxtb_Ausgabe.AppendText(column + "\t:" + "\t" + spalten_daten[z] + "\n");
Geh ins VS erstellen einen Webservice und lade in auf einen IIS.
Im Projekt dann auf Webref. hinzufügen und die Wizards sagen dir alles.
Da kannst du dann auf die Funktionen des Webservice zugreifen als wären es Funkt. in deinem Programm.
Den Rest macht c#.
`Hashtable` soll nicht mehr verwendet werden und ist nur noch zur Abwärtskompatibilität vorhanden! Verwende stattdessen die `Dictionary`-Klasse aus `System.Collections.Generic`. Aber auch dort gilt dasselbe: Durch die implementierung sind die Elemente nicht geordnet. Wenn Du sowas brauchst, kannst Du stattdessen die Klassen `SortedList` oder `SortedDictionary` verwenden. Beachte aber, dass diese ein anderes Laufzeitverhalten haben.
Es hat funktioniert, habe ein Benutzersteurelement zum Projekt hinzugefügt und mit folgendem Code ging es:
UserControl1 oform = new UserControl1();
splitContainer1.Panel2.Controls.Add(oform);
DANKE dir PRIEST für deine Hilfe und vorallem deine Geduld..!
!..MFG Bonafide..!
Hallo,
schreibe grad ein Addin mit C# für den Enterprise Architect (EA).
Benutze während der Entwicklung "regasm.exe" um die entsprechende DLL zu registrieren. Dann erst erkennt der EA die DLL als Addin.
Irgendwann soll das Addin auf verschiedenen Rechnern installiert und registriert werden.
Soviel ich weiß gehört "regasm.exe" zum Visual-Studio-Portfolio.
Auf den Zielrechnern ist aber nicht zwangsläufig VS vorhanden. Gibt es "regasm.sxe" auch standalone, um es dann bei meiner Installationsroutine auf den jeweiligen Rechnern zu verwenden ?
Oder andere Wege um die DLL zu registrieren (regsvr32.exe funktioniert leider nicht)?
Danke und Gruß
Für Error-Handling ist es vermutlich eine schlechte Idee. Es mag Spezielfälle geben wo es Sinn macht, aber das so allgemein als Lösung vorzuschlagen halte ich für doof (vor allem: Lösung für welches Problem überhaupt?).
Beim Logging könnte es z.B. nützlich sein, um eine Komponente, die haufenweise Informationen rausloggen kann, von der Logging-Implementierung zu entkoppeln.
Hallo,
Ich bräuchte für meine Anwendung die Möglichkeit Buttons eine gewisse Transparenz zu geben.
Ich weiß, dass man unter .net 3.5 mit WPF bei Button und anderen Controls das Opacity Property verwenden kann. Es ist aber zu aufwändig die gesamte Anwendung auf das neue System umzustellen.
Jetz wollte ich also fragen ob vielleicht jemand eine Lösung für dieses Problem kennt oder mir einen Tipp geben könnte wie ich diese Funktion implementieren könnte.
Danke im Voraus
Mit dem Operator + hängst Du weitere Delegaten ein:
namespace ConsoleApplication2
{
class Program
{
public delegate void testD(int a);
static void Main(string[] args)
{
testD wahl = delegate(int a)
{
Console.WriteLine(a);
};
wahl += delegate(int a)
{
Console.WriteLine(String.Format("Und noch mal:{0}", a));
};
wahl(5);
}
}
}
fujitsufan schrieb:
Jetzt hab ich mal alle überflüssigen casts weggelassen.
Du hast noch einen vergessen. Ausserdem tummeln sich in Deinem Vergleich unnötige Klammern – und zu guter letzt ist das ganze sowieso unnötig aufwendig. Vor allem solche expliziten Zuweisungen an eine Boolean-Variable sind fast immer überflüssig.
Und zu guter Letzt: lass die Präfixe vor den Variablen weg, die bringen nichts und irritieren bloß.
Weniger ist mehr .
Sehr richtig. Daher:
private bool IsFlagSet(int value, int flags) {
int mask = 1 << value;
return (flags & mask) == mask;
}
EDIT: Den Funktionsnamen kann man auch anschaulicher machen.
Servus,
geht recht einfach. Google einfach mal nach "Broadcast C#"
> http://dotnet-snippets.de/dns/c-broadcast-senden-SID567.aspx
> http://www.demo2s.com/Code/CSharp/Network/BroadcstSample.htm
sind einige Beispiele, wie man sowas lösen konnte.
gruß
Hellsgore
Du kannst das auch Windows erledigen lassen, einfach WM_NCHITTEST abfangen (WndProc des UserControls überschreiben) und Windows mittels HTCAPTION glauben lassen es hätte die Titelzeile eines Fensters erwischt
google findet mit "WM_NCHITTEST HTCAPTION C#" bestimmt auch Quellcode oder zumindest brauchbare Ansätze.
Bei der Methode hat man auch keine Probleme mit Mouse-Captures etc. und das ist glaube ich auch nur sehr wenig Code...
HappyIntPtr schrieb:
mal eine kurze Frage hierzu: in dem Dispose"Pattern" von MSDN wird ein Interopaufruf (closehandle) verwendet. Ist das wirklich notwendig ? Ich setze beim Cleanup in unsafe-Blöcken einfach IntPtr auf zero (wie es ja danach noch gemacht wird). Trotz teilweise großer Speichermengen (mehrere 100MB) und langen Laufzeiten (Tage) hatte ich kein Speicherleck. Ich weiß dass das nicht unbedingt beweisend ist aber dennoch: warum ?
Naja das kommt darauf an was in den IntPtr drinnensteht.
Wenn es ein Zeiger auf einen Speicherbereich ist der über die GC Funktionen "gepinnt" wurde, dann reicht es AFAIK nicht aus einfach den IntPtr auf IntPtr.Zero zu setzen - der Block würde sonst nie vom GC collected (weil dieser denkt dass ein Programmteil über den er keine Informationen hat den Speicher noch verwendet - sonst könnte es ja passieren dass der GC Speicher "einsammelt" der noch von irgendwelchen unmanaged DLLs verwendet wird). In dem Fall müsstest du den Speicher auch über die entsprechende GC Funktion wieder ent-pinnen - das Nullsetzen des IntPtr ist dann aber eine Fleissaufgabe.
Wenn der Speicher über das "fixed" Keyword gepinnt wurde dann musst du garnix machen, da der Block ja beim Verlassen des "fixed" Blocks automatisch "ent-pinnt" wird. Ein Nullsetzen des IntPtr ist dann aber auch nicht erforderlich.
Und wenn du irgendwie die Adresse eines nicht-gepinnten Speicherbereichs in einen IntPtr bekommst, dann ist das sowieso ein Fehler, da dann nicht garantiert ist dass die Adresse sich nicht ändert (und ein IntPtr eben keine Referenz ist die der GC entsprechend anpassen würde wenn er etwas verschiebt, sondern eine einfache Zahl, die der GC nie ändern wird). Ich wüsste jetzt zwar garnicht wie man das ohne gröbere Hacks hinbekommt, aber falls es geht ist es auf jeden Fall Unsinn. Dass es mit grösseren Speicherbereichen oft trotzdem geht (weil diese in einem Eigenen Bereich allokiert und nicht vom GC verschoben werden) ist wieder so ne Sache -- verlassen sollte man sich halt nicht darauf.
fischlefisch schrieb:
Es fehlt noch der Rückgabetyp der überschriebenen OnPaint Methode, ich nehme mal void an ...
richtig
fischlefisch schrieb:
wo wir gerade davon sprechen, wann wird diese eigentlich aufgerufen?
Falls du darauf anspielen willst wie du selbst ein Neuzeichnen veranlassen kannst: Control.Invalidate()
Ansonsten wird OnPaint