C # Come posso verificare se una casella è selezionata in un altro modulo?

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

  •  05-07-2019
  •  | 
  •  

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

È stato utile?

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"); 
       }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top