Eigene MessageBox



  • Für mein aktuelles Projekt benötige ich eine eigene MessageBox.
    Dies habe ich wie folgt versucht umzusetzen.

    Klasse meiner MessageBox

    public partial class MyMessageBox : Form
        {
            static MyMessageBox newMessageBox;
            static string Button_id;
    
            public static string ShowBox(string txtMessage)
            {
                newMessageBox = new MyMessageBox();
                newMessageBox.lbMessage.Text = txtMessage;
                newMessageBox.ShowDialog();
                return Button_id;
            }
    
            public static string ShowBox(string txtMessage, string txtTitle)
            {
                newMessageBox = new MyMessageBox();
                newMessageBox.lbMessage.Text = txtMessage;
                newMessageBox.Text = txtTitle;
                newMessageBox.ShowDialog();
                return Button_id;
            }
    
            public static string ShowBox(string txtMessage, string txtTitle, string txtBtn1, string txtBtn2, string txtBtn3)
            {
                newMessageBox = new MyMessageBox();
                newMessageBox.lbMessage.Text = txtMessage;
                newMessageBox.Text = txtTitle;
                newMessageBox.button1.Text = txtBtn1;
                newMessageBox.button2.Text = txtBtn2;
                newMessageBox.button3.Text = txtBtn3;
                newMessageBox.ShowDialog();
                return Button_id;
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                Button_id = "1";
                newMessageBox.Dispose();
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                Button_id = "2";
                newMessageBox.Dispose();
            }
    
            private void button3_Click(object sender, EventArgs e)
            {
                Button_id = "3";
                newMessageBox.Dispose();
            }
    }
    

    Und dazu der Aufruf

    string btnClicked = MyControls.MyMessageBox.ShowBox("test");
    

    Leider erhalte ich eine NullReferenceException. 😞
    In der Zeile

    newMessageBox.lbMessage.Text = txtMessage;
    

    Weshalb?? Bzw wie kann ich das Problem lösen??



  • Die Mischung von statischen und nicht-statischen Methoden ist bei dieser Klasse nicht zu empfehlen.
    Überlege dir, ob es gleichzeitig mehrere MessageBoxen geben kann (dann darfst du aber keine "static MyMessageBox"-Variable benutzen, da diese ja dann immer wieder überschrieben werden würde!). Ansonsten die ganze Klasse 'static' setzen.

    Und das 'Dispose' bei dem Button-Click ist auch keine gute Idee...

    Die NullReferenceException findest du wohl mit dem Debugger raus.


Anmelden zum Antworten