PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Brauche Hilfe in C# beim implementieren des "Closing" Events


minos5000
2004-05-03, 20:29:04
Hi,

mir wurde heute eine Aufgabe in C# vorgeknallt und ich bin am verzweifeln. Ich kenne mich mit den grundsätzlichen Funktionen von C# zwar aus, habe aber noch nie etwas mit der GUI gemacht und auch mehrer Stunden Doku haben mir nicht weitergeholfen. Dort werden ja immer nur die Methoden erklärt, was mir dabei fehlt ist ein konkretes Beispiel, wie diese verbaut werden.

GUI Programmierung habe ich bisher nur mit Swing gemacht und damals war das mit der Doku kein Problem, alles schön anschaulich erklärt, aber ich hab keine Ahnung was sich unsere Tutoren bzw die von Microsoft vorstellen, ohne gscheite Erklärung einem das so vor den Latz zu knallen. Ich hab auch schon in einigen Büchern nachgesehen, aber sämtliche erklären immer nur seitenweise die Grundlagen, aber eine GUI Erklärung habe ich bisher nur einmal gefunden, und die war auch nicht das gelbe vom Ei.


Hoffentlich gibbet hier jmd, der damit schon mehr Erfahrung hat.


Erst mal der Code:


using System.Windows.Forms;
using System;

namespace Sharp3D {
class MainFrame : Form {
PictureBox canvas;

private MainFrame() {
ClientSize = new System.Drawing.Size(800, 800);

this.Name = "Sharp3D";
canvas = new System.Windows.Forms.PictureBox();
canvas.Dock = DockStyle.Fill;
Controls.Add(canvas);

Show();
}

public void Loop() {
while(true) {
Application.DoEvents();

}
}

static void Main() {
MainFrame frame = new MainFrame();

// assign the frame's canvas to GraphicsDevice, i.e. all drawing
// operations are performed on this control
GraphicsDevice.Create(frame.canvas);

// start the rendering loop
frame.Loop();

GraphicsDevice.Destroy();
}
}
}
.


Die Aufgabe ist, das Closing Event abzufangen und dann ein Break an die Loop() Methode zu schicken.




thx


Ach ja, kennt niemand zufällig eine gute Doku, Tutorials oder Buch zu C#, wo alles anschaulich erklärt wird??

Demirug
2004-05-03, 20:48:40
Zuerst braucht deine Klasse natürlich eine entsprechenden Methode

private void MainFrame_Closed(object sender, System.EventArgs e)
{

}

Damit diese Methode auch aufgerufen wird braucht man eine zusätzliche Zeile in einem einzufügenden Konstruktor:

Closed += new System.EventHandler(MainFrame_Closed);

Das mit dem break funktioniert nun mit einem kleinen Trick. Man fügt eine bool variable in die Klasse ein und lässt die Schleife in der Loop Methode so lange durchlaufen wie diese den Wert true enthält. In der Closed Methode setzt man die Variable dann einfach auf false.

Alles in allem ist das aber eine ungewöhnliche Vorgehensweise für eine WinForm Anwendung.

minos5000
2004-05-03, 21:22:45
Hey danke, das ging ja schnell.

Ich hab grad selber auch noch rumprobiert, irgendwas mit Delegaten, hatte aber leider nicht geklappt.

Demirug
2004-05-03, 21:26:02
Original geschrieben von minos5000
Hey danke, das ging ja schnell.

Ich hab grad selber auch noch rumprobiert, irgendwas mit Delegaten, hatte aber leider nicht geklappt.

Das was ich gemacht habe ist ein Delegate. Du warst also schon auf der richtigen Spur. Wenn man eine passenden IDE hat dann mancht die solche Sachen von aleine.