Hallo Zusammen
Wahrschienlich eine anfängerfrage aber bitte lüncht mich nicht gerade... ich bin seit einigen Stunden auf der Suche nach einer Antwort (ich bin auch Froh um Links).
Eigentlich ganz eifach: ich möchte dass ich ein Form angezeigt wird und danach automatisch eine Methode gestartet wird.
Ist dies auf irgendeine art möglich?
Speeedy
Hallo Speeedy,
wenn es eine Methode ist, welche in der Klasse der Form vorhanden ist, kannst du die im Konstruktor (public Form1(), z.B.) aufrufen. Bis die Methode abgearbeitet wurde, wird die Form allerdings nicht angezeigt.
Um das zu umgehen, kannst du das Shown-Event der Form nutzen, und in diesem die Methode aufrufen.
Gruss
Friedel
Ohne Ziel ist auch der Weg egal.
Benutze das Form.Load Event.
@Noodles
Form angezeigt wird und danach automatisch eine Methode gestartet wird
Doku zu Form.Load:
Occure before a form displayed for the first time.
Gruss
Friedel
Ohne Ziel ist auch der Weg egal.
Oh hab ich wohl überlesen, danke.
Ich glaube einer steht auf meiner Leitung.
Kannst du mir das mit dem Shown genauer erklären?
P.s. MS Visual Studio 2003 (Framework 1.1)
Tja, dann geht Shown nicht ! (Erst ab 2.0)
Ruf die Methode im Konstruktor auf, oder per Thread im Konstruktor (also im Hintergrund), wenn du nicht auf das Ende der Methode warten willst bis die Form angezeigt wird.
Was besseres fällt mir dann leider nicht mehr ein, ausser auf .NET 2.0 zu wechseln 😁
Gruss
Friedel
Ohne Ziel ist auch der Weg egal.
und was ist mit Form.Activated???
Dann würde die Methode immer wieder aufgerufen, wenn die Form aktiviert (aus dem Hintergrund) geholt wird...
//edit: also mit großer Wahrscheinlichkeit mehr als einmal.
Gruss
Friedel
Ohne Ziel ist auch der Weg egal.
ja das stimmt natürlich auch wieder.
und was wenn man irgendwie guckt ob es das erste aktivieren war?
(mit Form.Load zum Beispiel, falls es da irgendeine Möglichkeit gibt)
edit: oder man macht es ganz plump und setzt eine variable die bei Form.Activated abgefragt wird (ist aber nicht besonders schön)
Sowas kann man relativ leicht über eine boolsche, klassenglobale Variable setzen.
bool erstemal = true;
Form_Load(...)
{
if(this.erstemal)
{
methodeZumAufrufen();
this.erstemal = false;
}
}
Gruss
Friedel
Ohne Ziel ist auch der Weg egal.
OK da schau ich morgen! Danke!
Ich hab vielleicht noch eine schönere Lösung gefunden um form.Activate nur ein mal ausführen zu lassen.
Und zwar:
this.Activated -= new EventHandler(Form1_Activated);
einfach anstatt einen neuen Event hinzuzufügen ihn einfach wieder wegnehmen.