Pop-Up Fenster erstellen



  • Hallo,
    ich bin ein ziemlicher Neuling und möchte mich langsam aber sicher in C# einarbeiten.
    Ich habe schon manche Mathe Programme im trivialsten Niveau geschrieben.

    Jetzt versuche ich in C# ein "Mensch ärgere dich nicht" spiel zu erstellen.

    Meine Frage:
    Wie erstelle ich ein popup Fenster, welches sich dann nach buttonclick wieder schließt?

    Danke im Voraus.

    MFG Deffcon



  • Hmm.. das ist natürlich eine grobe Frage. Sollte als Basiswissen vorhanden sein, d.h. musst du dir auf jedenfall in deinem Buch oder ähnliches was du zum lernen verwendest nochmal anschauen.

    Ich geb dir ne grobe Antwort:

    Du legst einfach eine neue Form im deiner Projektmappe an, die du dann je nachdem ob du eine Eingabe erzwingen willst bevor auf der "Vaterform" wieder gearbeitet werden kann, mit Form.ShowDialog oder mit Form.Show aufrufst.

    Zum schliessen kannst du innerhalb dieser neuen Form z.b. bei einem Button der auf der Form liegt die this.close Methode aufrufen, um die Form wieder zu schließen.

    Wie gesagt das ist eine grobe Antwort. Du solltest das auf jedenfall in deinem Tutorial oder Buch nochmal durchlesen.

    Gruß



  • Hallo,

    ich wollte die genannte Methode eben testen.
    Ich versuchte im Program.cs die Aufgabe "Form.ShowDialog" testen, jedoch wird das garnicht erkannt von Visual C# 2008.
    Was mache ich falsch?
    Und wie kann ich eine Variable aus der anderen Form in die "Hauptform" übertragen?

    MFG Simon



  • Ich habe eben die zweite Form auch durch "Application.Run(new Form());
    gestartet, aber dann wird es ja nacheinander gestartet aber ich wollte es ja wie ein pop up im parent.



  • Du hast das Form erstellt unter welchem Namen? 🙂

    Diesen Namen hat auch die zugehörige Klasse, du müsstest nun eine Instanz dieser erstellen & dann kannst du per Program.ShowDialog() das Form öffnen lassen, an der Stelle wo du es haben möchtest.



  • Okay ich war woll doch ein bisschen zu grob :-).

    Also du erstellst eine neue Windows-Form mit Namen z.b. "Popup":

    Dann gehst du her und machst z.B. im Click-Event deines Buttons auf deiner Hauptform folgendes:

    // Auf meiner Form gibt es einen Button "Start"
    private void but_start_Click(object sender, EventArgs e)
    {
     Popup w = new Popup();
    
     w.ShowDialog();
    }
    

    Keine Gewähr für den Code den hab ich aus dem Kopf geschrieben, müsste aber passen.



  • 1. Ich würde zu .Show() tendieren da .ShowDialog() für ein Ergebnis sinnvoll ist.
    2. Für eine Variable musst du eine Statische Klasse erstellen mit Statischen Variablen da in einer vollständig Objektorientieren Sprache nichts ausserhalb einer Klasse initialisiert werden kann. Also einfach neue Klasse, static vor class Bla und da rein static Typ Name.



  • Danke für die Antworten.
    Ich habe es jetzt im load event der "main"-form mit .Show() aufgerufen.
    Jedoch wird es nicht wie gewählt in der position "center parent" angezeigt und hinter der main form. Kann ich es in den Vordergrund schalten?
    oder ist es nicht zu empfehlen die methode in das load event einzubinden?



  • Popup.BringToFront() // Bring die Form in den Vordergrund

    Wenn du denkst das es im Load-Event sinnvoll ist, ich will dir da nicht reinreden :-).



  • Verwende besser das Form.Show()-Ereignis, und um es zu zentrieren, rufe dann popup.Show(this) auf.



  • Danke, Th69, deine Variante hat den gewünschten Effekt gebracht.
    Da kann ich mal schön weiter rumtüfteln.
    Habe nur im Moment wenig Zeit.
    Werde hier sicher noch einiges nachfragen müssen 😃

    In meinem 1266Seiten Buch steht zwar viel drin aber wenn man dann was bestimmtes sucht findet man es nicht.
    Und es ist soviel theorie und wenig praxisbezogenes.

    Danke an alle Thread-beteiligten 😉
    Und einen guten rutsch ins neue jahr!


Anmelden zum Antworten