C # Wie kann ich überprüfen, um zu sehen, ob eine Checkbox auf eine andere Form überprüft wird?

StackOverflow https://stackoverflow.com/questions/1410923

  •  05-07-2019
  •  | 
  •  

Frage

Ich bin mit C # und ich möchte zu sehen, überprüfen, ob eine Checkbox auf der Haupt-Form geprüft wird und wenn ja, einige Code ausführen, das Problem ist, ich mit keiner Form in einer Klassendatei (Datei bin, ist Klassendatei richtig?). Was ist der einfachste Weg, dies zu tun?

Danke Jamie

War es hilfreich?

Lösung

Die beste Option ist eine boolean Eigenschaft auf dem Formular zu erstellen, die den Checked Wert der CheckBox aussetzt.

public bool OptionSelected
{
    get { return checkBox.Checked; }
    set { checkBox.Checked = value; } // the set is optional
}

Andere Tipps

Sie müssen einen Verweis auf die Form und die Form hat die Checkbox (oder eine Eigenschaft, die das Kontrollkästchen konsultiert) aussetzen.

Es gibt keinen Unterschied zwischen UI-Programmierung und Nicht-UI-Programmierung in dieser Hinsicht. Wie würde fragen Sie nach der Name Eigenschaft eines Person Beispiel aus einer anderen Klasse? Sie würden einen Verweis auf die Instanz erhalten, und für die entsprechende Eigenschaft fragen.

Sie müssen also auf jeden Fall einen Verweis auf das Formular, und dann ist es eines der folgenden:

bool checked = form.IsAdultCheckbox.Checked;
bool checked = form.IsAdult; 

(Wo die IsAdult Eigenschaft würde someCheckbox.Checked zurückzukehren.)

Die tatsächlichen Eigenschaftsnamen können hier falsch sein (z Checked kann keinen bool zurück), aber ich hoffe, Sie bekommen die Idee.

Können Sie eine Schnittstelle mit einer Eigenschaft definieren, hat die Form die Schnittstelle implementieren und true zurück, wenn das Kontrollkästchen aktiviert ist, und eine Instanz dieser Schnittstelle zu Ihrer Klasse übergeben?

Zum Beispiel:

interface IMyFormFlag
{
    bool IsChecked { get; }
}

public class MyForm : Form, IMyFormFlag
{
    CheckBox chkMyFlag;

    bool IsChecked { get { return chkMyFlag.Checked; } }
}

public class MyObject
{
    public void DoSomethingImportant(IMyFormFlag formFlag)
    {
        if (formFlag.IsChecked)
        {
            // do something here
        }
    }
}

Ich persönlich mag es nicht Set mit oder erhalten. Ich habe es wie folgt aus:

if (checkBox.IsChecked.Equals(true))
{
//insert code here
}

Sie können diese verwenden es funktioniert gut für mich

    if (Convert.ToBoolean(CheckBox1.IsChecked))
      {
         MessageBox.Show("true");
      }
    else
       {
         MessageBox.Show("false"); 
       }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top