Du mußt aber noch das Control aktualisieren. Entweder direkt in der Methode oder aber danach aufrufen:
tableLayoutPanel1.Invalidate();
Ich sehe gerade, in der Methode 'computerZug' wird dies ja auch schon gemacht:
//neu zeichnen und den Timer starten
tableLayoutPanel1.Refresh();
P.S. Refresh bedeuted: Invalidate + Update, also sofortiges Neuzeichnen
Guten Abend,
ich habe mal eine Frage. Wir erweitern mit Trick 17 ein anderes Programm indem wir einfach eines unserer Fenster "in" das andere Programm legen. Es wirkt dann so als hätte man eine zusätzliche Funktionalität. Das funktioniert soweit auch ganz gut. Blöd wird es erst, wenn das Hauptfenster verschoben wird. Unsere Anwednung bleibt nämlich dann an der ursprünglichen Stelle kleben:-( Ich muss also irgendwie mitbekommen, wenn sich das andere Fenster bewegt oder die Größe geändert wird. Falls es noch nicht klar ist.. Die Anwendung die wir erweitern wollen ist natürlich nicht von und sondern eine gekaufte.
Nun zurück... Wie kann ich mir in C# irgendwas basteln und das abfangen bez einfach nur mitbekommen?
Für neue Projekte empfiehlt Microsoft das Entity Framework. Ich selbst ziehe ein ORM wie EF auch vor, aber bin ebenso nicht ganz abgeneigt das ein oder andere über SQL und DB-Spezifischen Kram zu realisieren (und hoffe das die kommende Version 6 vom Entity Framework auch bei Code First hier wirklich Stored Procedures etc. unterstützt).
Fakt ist bislang das zumeist direkte SQL-Statements schneller sind als die ORM-Alternativen, auch wenn letztere meistens auch schon schnell genug sind (bzw. sich noch etwas optimieren lassen). Für 95% der Anwendung, an der ich mitarbeite, überwiegt aber der Vorteil eines ORMs da wir viele Bearbeitungsfenster haben wo nicht die Massenverarbeitung im Fokus steht. Zudem heißt es ja nicht das man nicht beides kombinieren kann, wo es sinnvoll ist.
Hallo,
eine Übersicht zum WSH findet sich hier:
http://msdn.microsoft.com/en-US/library/a74hyyw0.aspx
Speziellere Themen (die Library enthält auch das FileSystemObject) lassen sich auch finden, hier:
http://msdn.microsoft.com/library/ms950396.aspx
unter Script Runtime
Was alles enthalten ist in der Library kann man sich zeigen lassen, wenn man den Verweis rechts-klickt und "Im Objektkatalog anzeigen" wählt.
MfG,
Probe-Nutzer
Klaus-Werner schrieb:
Wenn ich jetzt aber diese Hilfeseite verwende,
gibt es garkein "AddItem" oder sowas mehr???
Die Listbox hatte noch nie ein AddItem, aber dessen Property "Items" hat eine Add-Methode (Wie man u.a. in den Beispiel unterhalb des MSDN-Eintrages sehen kann). Und wenn man auf Items klickt, sieht man das es sich eigentlich um eine ListBox.ObjectCollection Klasse handelt, dort findet man auch eine Methode "Add".
Hm, mit Controltypen kenne ich mich nur rudimemtär aus bzw. hab ich bisher noch nicht gebraucht. Ich heb's mir aber auf bis die Zeit kommt.
Gruss und Dank von
Ank
Trollst oder hast du keine Ahnung? Hier gehts um Mannjahre, wenn nicht dutzende Mannjahre. Und damit das ganze auch halbwegs bedienbar ist und ein bisschen was kann, dann noch viel mehr Nichts, was man am Wochenende hinrotzt, weil ein Freund schnell ein Cartoon zeichnen will.
Hier gibts eine Liste von Programmen, die du dir anschauen könntest:
http://en.wikipedia.org/wiki/List_of_2D_animation_software
Erwarte aber nicht zu viel...
Sorry, dann hatte ich wohl deine Grafik falsch verstanden (ich dachte die Subelemente sollen innerhalb des Panels sein).
Probiere mal, zuerst den RowCount zu erhöhen und anschließend den Insert zu machen - bzw. überprüfe mal, ob sich der RowCount nicht automatisch durch das Insert erhöht.
PuppetMaster2k schrieb:
@HelloWorld(): dein Problem ist der using-Block. Nach Verlassen des using-Blocks wird beim StreamWriter Dispose() aufgerufen und dadurch auch das Dispose() auf der Pipe ausgeführt.
Vielleicht funktioniert folgendes: Du könntest den StreamWriter einmalig instanzieren und benutzt diese eine Instanz um über die Pipe zu kommunizieren. Und am Ende, wenn du die Kommunikation beenden willst, rufst du von Hand ein Close() auf.
Der StreamWriter ist in dem Beispiel nicht notwendig, es wäre auch so möglich gewessen.
static void Main(string[] args)
{
NamedPipeServerStream server = new NamedPipeServerStream("my_pipe", PipeDirection.InOut);
Console.WriteLine("Wait for client to connect");
server.WaitForConnection();
Console.WriteLine("Client connected....");
Console.WriteLine("Sending data....");
byte[] data = Encoding.ASCII.GetBytes("*** Hello Pipe World ***");
server.Write(data, 0, data.Length);
server.Write(data, 0, data.Length);
Console.ReadKey();
server.Dispose();
}
Es muss noch hinzugefügt werden, dass bei dem Beispiel auf C# und C++ Seite Synchron gearbeitet wird. Es wird auf C++ Seite nur einmal auf eine Nachricht gewartet, danach wird die Verbindung geschlossen.
while(true)
{
wcout << "Reading data from pipe..." << endl;
// The read operation will block until there is data to read
char buffer[128];
DWORD numBytesRead = 0;
BOOL result = ReadFile(
pipe,
buffer, // the data from the pipe will be put here
127 * sizeof(wchar_t), // number of bytes allocated
&numBytesRead, // this will store number of bytes actually read
NULL // not using overlapped IO
);
if (result) {
buffer[numBytesRead] = '\0'; // null terminate the string
wcout << "Number of bytes read: " << numBytesRead << endl;
wcout << "Message: " << buffer << endl;
} else {
wcout << "Failed to read data from the pipe." << endl;
break;
}
}
schmidt-webdesign.net schrieb:
ADO-Connection-Strings anzufertigen kann sehr schnell zu einem Nerven aufreibenden Gefrickel werden. Es gibt aber einen recht netten Trick: Legen Sie eine Datei mit beliebigem Namen und der Endung UDL an. Nach einem Doppelklick auf diese Datei öffnet sich ein visuelles Interface, mit dem die Datenbankverbindungs-Parameter zusammengesetzt und auf korrekte Funktion getestet werden können. Nach dem Speichern und Schließen öffnen Sie diese Datei mit dem Editor Notepad. Kaninchen aus dem Hut: Der benötigte ADO-Connection-String im Klartext! Kopieren muss man diesen String dann aber noch selbst …
Super Tipp! Den kannte ich noch nicht