C # Come posso verificare se una casella è selezionata in un altro modulo?
Domanda
Sto usando C # e vorrei verificare se è selezionata una casella nel modulo principale e, in tal caso, esegui un po 'di codice, il problema è che sono in un file di classe (il file senza modulo, è file di classe corretto?). Qual è il modo più semplice per farlo?
Grazie Jamie
Soluzione
L'opzione migliore è creare una proprietà booleana
sul modulo che espone il valore Checked
di CheckBox
.
public bool OptionSelected
{
get { return checkBox.Checked; }
set { checkBox.Checked = value; } // the set is optional
}
Altri suggerimenti
È necessario un riferimento al modulo e il modulo deve esporre la casella di controllo (o una proprietà che consulta la casella di controllo).
Non c'è alcuna differenza tra programmazione UI e programmazione non UI in questo senso. Come chiederebbe la proprietà Name
di un'istanza Person
di una classe diversa? Otterresti un riferimento all'istanza e richiedi la proprietà pertinente.
Quindi hai sicuramente bisogno di un riferimento al modulo, quindi è uno dei:
bool checked = form.IsAdultCheckbox.Checked;
bool checked = form.IsAdult;
(Dove la proprietà IsAdult
restituisce someCheckbox.Checked
.)
I nomi delle proprietà reali potrebbero essere errati qui (ad es. Checked
potrebbe non restituire un bool
) ma spero che tu abbia avuto l'idea.
Puoi definire un'interfaccia con una proprietà, avere il modulo implementare l'interfaccia e restituire true se la casella è selezionata e passare un'istanza di questa interfaccia alla tua classe?
Ad esempio:
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
}
}
}
Personalmente, non mi piace usare set o get. L'ho fatto in questo modo:
if (checkBox.IsChecked.Equals(true))
{
//insert code here
}
puoi usarlo per me funziona benissimo
if (Convert.ToBoolean(CheckBox1.IsChecked))
{
MessageBox.Show("true");
}
else
{
MessageBox.Show("false");
}