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
Vous pouvez définir la propriété Enabled
sur false
. C'est à dire. checkBox1.Enabled = false;
EDIT: Trop lent: P
Vous pouvez définir AutoCheck property sur false
.
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
Pourquoi ne pas définir la propriété Enabled
sur false
?
AutoCheck n'existe pas dans UWP mais je pense que vous pouvez utiliser IsTapEnabled = false.
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.
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;
}
}
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);
}
}
Utilisez une Label
simple en utilisant un glyphe comme celui-ci pour Text
: ✔ checkBox1
.