Aufruf einer neuen Seite



  • Ich habe ein lauffähiges C# Programm das ich hin und wieder weiter entwickel.
    Aus diesem Grund habe ich mir unten ein Label das die aktuelle Versionsnummer angiebt.
    Ich habe auch schon nen Button mit Versionsinfo programmiert, allerdings möchte ich dass beim klicken ein neues Fenster aufgeht ( das ich halt mit Stings voll schreibe was jede Version kann ).
    Bis jetzt haben wir in der Schule nur die MessageBox.Show verwendet aber die ist in diesem Fall etwas schlecht.

    Habt ihr nen anderen Befehl wo ich mehr hineinschreiben kann ausser 1 Zeile bei der Message Box ?

    ThX

    😉



  • Mach dir doch am besten ein neues Fenster, also eine neue Form. Wenn man dann auf den Button klickt, schreibst du in das Event sowas wie

    private Form2 form2 = new Form2();
    void versionButton_Click(Object sender, EventArgs e)
    {
        form2.Show();
    }
    

    Damit sieht man dann dein 2. Fenster.



  • wenn ich den code so eingebe hab ich den Fehler bei "Private Form2"
    http://www.bilder-hochladen.net/files/fi85-d-c51c.jpg

    Ist das ganze dann eine neue Klasse ?



  • Beim VS gibt es als Vorlage dafür die "AboutBox" (unter "Projekt" / "Datei hinzufügen").
    Dann brauchst du nur noch die Daten in der "AssemblyInfo.cs" (bzw. über die Projekteigenschaften: "Anwendung" / "Assemblyinformationen...") ändern.
    Und dann entsprechend dem Code von FreakY<3Cpp aufrufen (nur halt AboutBox anstatt Form2 ;-).

    Edit: im deutschen VS heißt es "Hinzufügen" / "Neues Element" und dann "Infofeld" auswählen.



  • wow danke das funkt ja einfach

    😃 😃 😃 😃 😃



  • Ich hab nun das zweite form mit eingebunden und es funkt auch.
    Will ich nur dieses Fenster schliessen so muss ich ja this.Close(); schreiben da sonst die kommplette exe weg geht.

    drück ich jetzt ein zweitesmal auf den Info button dann bekomme ich die Fehlermeldung " keine Freigabe des Forms ".

    Muss ich da noch irgendwo was enablen oder disablen ?



  • Ich bin mir nicht ganz sicher, aber ich vermute du erstellst von der Form keine neue Instanz, bevor du sie erneut sichtbar machen willst. Vielleicht hilft dir das weiter:

    public partial class Form1 : Form
        {
            private Form2 exForm;
    
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                // Referenz auf externe Form null oder nicht sichtbar?
                if (exForm == null || !exForm.Visible)
                {
                    // Neue Instanz der Form erstellen.
                    exForm = new Form2();
                    // Externe Form sichtbar machen.
                    exForm.Show();
                }
                else
                {
                    MessageBox.Show("Bereits geöffnet!");
                }
            }
        }
    


  • Ein Info-Dialog wird ja für gewöhnlich modal angezeigt, also:

    using(AboutBox aboutBox = new AboutBox())
    {
        aboutBox.ShowDialog(this);
    }
    


  • HI

    Ich hab heute unseren Lehrer wieder getroffen und ihm mein Problem gezeigt.
    Die Abhilfe hab ich unten angefügt.
    Problem war dass nicht alles geschlossen gewesen ist ( Hab es aber ned so gepeilt er meinte im Unterricht kommt das noch ausführlicher).

    void btn_version_Click(Object sender, EventArgs e)
            {
                Info form2 = new Info();
                form2.ShowDialog();
                // Form 2 aus dem Speicher löschen
                form2.Dispose();
            }
    


  • ups hier noch wie ich das neue Form schliesse.

    private void btn_exit_Click(object sender, EventArgs e)
            {
                this.Close();
            }
    

    falls es jemand interessiert.

    MfG


Log in to reply