/ / Disattiva la casella di controllo della casella di controllo al clic ma non dal codice dietro - c #, winforms, checklistbox

Disabilita la casella checklistbox sul click ma non dal codice sottostante - c #, winforms, checklistbox

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 № 1

Ok, 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