2010-01-09 8 views
2

J'ai besoin de remplacer le comportement CheckedListBox de base.C# Override CheckedListBox

Il est possible de cocher et de décocher une CheckedListBox sans aucun code attaché.

J'ai besoin de désactiver ce comportement afin que je puisse implémenter du code personnalisé.

des idées?

merci. .

par exemple:

si (ListenCheckedListBox.GetItemChecked (0)) { ListenCheckedListBox.SetItemChecked (0, false); }

si { ListenCheckedListBox.SetItemChecked (0, true) (ListenCheckedListBox.GetItemChecked (0)!); }

ne fonctionne pas car le comportement par défaut des contrôles le fait de toute façon.

J'espère que vous pouvez comprendre mon problème maintenant.

+0

Huh? Pouvez-vous être plus clair sur la question? –

+0

Je suppose que l'OP veut abandonner le comportement de contrôle par défaut de la case à cocher. –

+0

il est possible de basculer l'état vérifié d'un CheckedListBox sans utiliser de code (juste en cliquant dessus, comme on/off). J'ai besoin de surpresser ce comportement afin que l'état vérifié ne change que si je le fais dans le code. – iTEgg

Répondre

0

ok je l'ai compris. Je le voyais mal. Je gère juste pour l'état vérifié au lieu de le définir deux fois. une fois par le contrôle deuxième par moi.

oui j'étais stupide!

0

Vous pouvez créer votre propre CheckedListBox en héritant de la classe intégrée et en remplaçant les méthodes appropriées.

Comme je comprends votre question, vous ne voulez pas que les éléments soient sélectionnés lorsque l'utilisateur clique sur eux, vous voulez contrôler la sélection entièrement à partir de votre code.

Pour ce faire, vous pouvez remplacer la méthode OnItemCheck et contrôler la nouvelle valeur qui est définie:

public class CheckedListBoxEx : CheckedListBox 
{ 
    protected override void OnItemCheck(ItemCheckEventArgs ice) 
    { 
     ice.NewValue = ice.CurrentValue; 
    } 
} 

Cela peut aussi être fait en manipulant simplement l'événement ItemCheck.

+0

cela semble intéressant. Im un débutant donc ma question est comment puis-je faire ce que vous avez mentionné? Comment puis-je trouver la méthode que je dois remplacer pour le faire fonctionner comme je le veux? – iTEgg

+0

pas ce n'est pas calme ce dont j'ai besoin. Je veux être capable de cliquer et de définir sa valeur aussi. J'ai besoin de remplacer les fonctions de la classe de base qui bascule la valeur vérifiée (en fonction des clics de souris) sans aucun codage. Pour cette raison, le code est en cours d'exécution deux fois. une fois lorsque je mets à jour son état dans le code et deuxièmement, le comportement par défaut du contrôle le fait également basculer. – iTEgg