[C#] Checkbox ausserhalb der Forms abfragen

ehonk

Mitglied
Hallo miteinander

ich bastle an einem kleinen Berechnungstool, hierfür muss ich ausserhalb der Form abfragen ob bestimmte Checkboxen aktiv sind.

Hab mir mal folgendes gebastelt:

Form:
Code:
namespace form_checkbox
{
    public partial class Form1 : Form
    {
        bool _cbox;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            converter conv = new converter();
            conv.rechnen();
        }

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox1.Checked)
                _cbox = true;
            else
                _cbox = false;
        }

        public bool _checkbox
        {
            get { return _cbox; }
        }
    }
}

externe klasse:

Code:
namespace form_checkbox
{
    class converter
    {
        public void rechnen()
        {
            Form1 fm1 = new Form1();
            if (fm1._checkbox)
            {
                MessageBox.Show("checkbox");
            }
        }
    }
}

Wie kann ich das eleganter lösen, und vor allem wie würde es üperhaupt funktionieren?

Danke euch
 
Hallo,

das extistierende Objekt deiner Form muss den Klassen außerhalb deiner Form bekannt sein, indem du es etwa als Parameter übergibst.
Deine Klasse "converter" erzeugt eine neue Instanz der Form, die mit der aktuell sichtbaren nichts zu hat - so wird es also nicht funktionieren.

Gruß
MCoder
 
Füge mal nach
C#:
Form1 fm1 = new Form1();
noch ein
C#:
fm1.Show();
ein. Dann solltest du sehen was wirklich geschieht.
 
Es poppt dir nicht nochmal auf, sondern ein zusätzliches poppt auf. Danach hast du also zwei. Und du ließt dann den Checkbox-Wert aus der neuen Form (oder Menu, wie du es nennst) aus. Hat MCoder ja schon gesagt.
 
Du kannst in der Klasse converter die Funktion rechnen zum Beispiel so gestalten:
C#:
namespace form_checkbox
{
    class converter
    {
        public void rechnen(Form1 fm1)
        {
            if (fm1._checkbox)
            {
                MessageBox.Show("checkbox");
            }
        }
    }
}

Und dann den Aufruf entsprechend mit conv.rechnen(this) informieren, welches denn die aktive Form ist.
 
Warum übergibst du nicht einfach die Checkboxen an die Funktion. Muepe32 hat es schon vorgeschlagen allerdings würde ich nicht die ganze Form mitgeben, sondern nur die CheckBoxen.

Also in etwa so:
Code:
private void button1_Click(object sender, EventArgs e)
        {
            converter conv = new converter();
            conv.rechnen(checkBox1.checked, checkBox2.checked);
        }

Hat das Converter-Objekt noch weitere Aufgabe? Wenn nicht, dann sollte die Methode rechnen static sein.
 
Zurück