RadioButton Methode Checked liefert false



  • Hey,

    namespace FormTest
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                Test test = new Test();
                if (radioButton1.Checked || radioButton2.Checked)
                    test.zugriff();
                else
                    MessageBox.Show("Bitte Radio Button 1 oder Radio Button 2 auswählen");
            }
        }
    
        public class Test : Form1
        {
            public void zugriff()
            {
                if (radioButton1.Checked) // <- liefert false zurück
                    MessageBox.Show("Radio Button 1 ist ausgewählt");
                if (radioButton2.Checked) // <- liefert false zurück
                    MessageBox.Show("Radio Button 2 ist ausgewählt");
            }
        }
    }
    

    Ich habe ein Problem. Warum liefert meine if Abfrage in der Klasse Test grundsätzlich false zurück, auch wenn einer der RadioButton ausgewählt wurde?
    Die beiden RadioButtons sind jeweils protected.



  • Blacky666 schrieb:

    Warum liefert meine if Abfrage in der Klasse Test grundsätzlich false zurück, auch wenn einer der RadioButton ausgewählt wurde?

    Weil du OOP nicht verstanden hast 😉 Was du eigentlich machen wolltest, war die aktuelle Instanz von Form1 (this) an irgendeine Methode/Klasse übergeben.
    Wenn du nämlich eine Instanz von 'Test' erstellst, hast du damit auch eine separate Instanz von Form1, die nichts mit dem Fenster zu tun hat, welches gerade angezeigt wird. Und per default sind eben Radiobuttons unchecked.



  • Woher soll denn deine von Form1 abgeleitete Klasse die Information nehmen?

    Die Checkboxen deiner abgeleiteten Form sind dann halt nicht angewählt?

    Richtig wäre:

    public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
               if (radioButton1.Checked || radioButton2.Checked)
                    this.zugriff();
                else
                    MessageBox.Show("Bitte Radio Button 1 oder Radio Button 2 auswählen");
            }
    
            public void zugriff()
            {
                if (radioButton1.Checked) // <- liefert false zurück
                    MessageBox.Show("Radio Button 1 ist ausgewählt");
                if (radioButton2.Checked) // <- liefert false zurück
                    MessageBox.Show("Radio Button 2 ist ausgewählt");
            }
    
        }
    


  • Ok... Aber was is wenn meine Klasse Test, die Info benötigt, ob ein Radio Button ausgewählt ist, oder nicht.
    Oder is es komplett falsch, was ich vorhabe?



  • Dann baue deine Testklasse anders auf.

    // Edit: - Code muss ich hier nich beifügen...

    Das sind soweit alles Grundlagen.



  • Blacky666 schrieb:

    Oder is es komplett falsch, was ich vorhabe?

    Und woher sollen wir wissen was Du vorhast?


Anmelden zum Antworten