web-dev-qa-db-fra.com

Comment faire une case à cocher non sélectionnable?

Je me demandais comment faire une case à cocher non sélectionnable dans c #? Je pensais que ce serait quelque chose comme setSelectable (false) ou quelque chose mais je n'arrive pas à voir la méthode.

J'ai trouvé canSelect, mais cela semble être une propriété en lecture seule.

Merci

20
rik

Vous pouvez définir la propriété Enabled sur false. C'est à dire. checkBox1.Enabled = false;

EDIT: Trop lent: P

14
anothershrubery

Vous pouvez définir AutoCheck property sur false.

104
Jacob Seleznev

Vous pouvez en créer un en utilisant le code suivant 

public class ReadOnlyCheckBox : System.Windows.Forms.CheckBox
{
        private bool readOnly;

        protected override void OnClick(EventArgs e)
        {
                // pass the event up only if its not readlonly
                if (!ReadOnly) base.OnClick(e);
        }

        public bool ReadOnly
        {
                get { return readOnly; }
                set { readOnly = value; }
        }
}

ou aussi vous pouvez gérer l'événement de changement vérifié et toujours le remettre à la valeur que vous voulez

7
Haris Hasan

Pourquoi ne pas définir la propriété Enabled sur false?

1
Richard Everett

AutoCheck n'existe pas dans UWP mais je pense que vous pouvez utiliser IsTapEnabled = false. 

0
sjb-sjb

En réponse à certains commentaires sur les étiquettes grisées: Définissez la Text de la CheckBox sur la chaîne vide, Enable à false et utilisez une Label pour le texte. 

Inconvénient: Pas de support mnémonique hors de la boîte.

0
tm1

Pour désactiver toutes les cases à cocher dans la liste à cocher

 for (int i = 0; i < checkedListBoxChecks.Items.Count; i++)
                   {
                       checkedListBoxChecks.SetItemChecked(i, true);
                       //checkedListBoxChecks.Enabled = false;
                       this.checkedListBoxChecks.SetItemCheckState(i, CheckState.Indeterminate);                  
                   }


 private void checkedListBoxChecks_ItemCheck(object sender, ItemCheckEventArgs e)
        {
            if (e.CurrentValue == CheckState.Indeterminate)
            {
                e.NewValue = e.CurrentValue;
            }
        }
0
Thapaswi

Ce code a fonctionné pour moi:

public class CtrlCheckBoxReadOnly : System.Windows.Forms.CheckBox
{
    [Category("Appearance")]
    [Browsable(true), EditorBrowsable(EditorBrowsableState.Always)]
    public bool ReadOnly { get; set; }

    protected override void OnClick(EventArgs e)
    {
        if (!ReadOnly) base.OnClick(e);
    }
}
0
Ángel Ibáñez

Utilisez une Label simple en utilisant un glyphe comme celui-ci pour Text: ✔ checkBox1.

0
tm1