Sto creando un'applicazione winforms con aCheckedlistbox che contiene alcuni nomi. Ciò di cui ho bisogno è che le caselle di controllo siano disabilitate dal controllo facendo clic, ma siano comunque controllabili dal codice.
Ho provato a impostare il .CheckOnClick
su false, ma la casella di controllo continua a selezionare al secondo clic.
Ho provato la soluzione dalla seguente domanda: Come disabilitare una casella in una casella selezionata? Ma ciò ha comportato la disabilitazione della possibilità di controllare anche dal codice.
Disabilitare l'intera casella non è un'opzione, questo disabiliterà tutti gli eventi tra cui la selezione e il doppio clic che sono cruciali nella mia applicazione.
Qualcuno che conosce una soluzione per questo?
risposte:
3 per risposta № 1Ok, quello che devi fare è gestire l'evento ItemCheck per CheckedListBox, in questo modo:
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
e.NewValue = e.CurrentValue;
}
Se si desidera modificare lo stato di una casella di controllo nel codice, sarà necessario rimuovere temporaneamente l'handle dell'evento:
checkedListBox1.ItemCheck -= checkedListBox1_ItemCheck;
checkedListBox1.SetItemChecked(1, true);
checkedListBox1.ItemCheck += checkedListBox1_ItemCheck;
Non è elegante, ma è una possibile soluzione.
0 per risposta № 2
Impostare il Enabled
proprietà a False
:
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.enabled.aspx