C # Comment puis-je vérifier si une case à cocher est cochée sur un autre formulaire?

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

  •  05-07-2019
  •  | 
  •  

Question

J'utilise C # et j'aimerais vérifier si une case à cocher du formulaire principal est cochée et si un code est exécuté, le problème est que je suis dans un fichier de classe (fichier sans formulaire, fichier de classe correct?). Quel est le moyen le plus simple de procéder?

Merci Jamie

Était-ce utile?

La solution

La meilleure option consiste à créer une propriété boolean sur le formulaire qui expose la valeur Checked du CheckBox .

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

Autres conseils

Vous avez besoin d'une référence au formulaire et celui-ci doit afficher la case à cocher (ou une propriété qui consulte la case à cocher).

Il n'y a pas de différence entre la programmation d'interface utilisateur et la programmation sans interface utilisateur à cet égard. Comment demander la propriété Name d'une instance Person d'une classe différente? Vous obtiendrez une référence à l'instance et demanderez la propriété correspondante.

Vous avez donc absolument besoin d'une référence au formulaire, puis de l'un des éléments suivants:

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

(Où la propriété IsAdult renverrait someCheckbox.Checked .)

Les noms de propriété réels peuvent être incorrects ici (par exemple, Vérifié peut ne pas renvoyer de bool ), mais j'espère que vous avez compris.

Pouvez-vous définir une interface avec une propriété, demander au formulaire d'implémenter l'interface et renvoyer true si la case à cocher est cochée, puis transmettre une instance de cette interface à votre classe?

Par exemple:

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
        }
    }
}

Personnellement, je n'aime pas utiliser set ou get. Je l'ai fait comme ça:

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

vous pouvez utiliser cela cela fonctionne très bien pour moi

    if (Convert.ToBoolean(CheckBox1.IsChecked))
      {
         MessageBox.Show("true");
      }
    else
       {
         MessageBox.Show("false"); 
       }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top