Comment modifier dynamiquement / set checkedListBox élément de premier plan de couleur
J'ai le code ci-dessous. Comment puis-je définir checkedListBox élément de premier plan de couleur en fonction de si l'élément est coché ou non coché?
private void FindSelectedUserRoles()
{
lblSelectedUser.Text = Code.CommonUtilities.getDgvStringColValue(dataGridViewUserList, "UserName").Trim();
//iterate all roles selected user is member of
for (int i = 0; i < checkedListRoles.Items.Count; i++)
{
string roleName = checkedListRoles.Items[i].ToString();
string selectedUserRoles = Code.MemberShipManager.GetSpecificUsersRoles(lblSelectedUser.Text.Trim());
if (selectedUserRoles.Contains(roleName))
{
checkedListRoles.SetItemChecked(i, true);
//here i want to set item fore colour to green
}
else if (selectedUserRoles.Contains(roleName) == false)
{
checkedListRoles.SetItemChecked(i, false);
//and here, i want item fore colour to remain black
}
}
}
OriginalL'auteur StackTrace | 2013-07-11
Vous devez vous connecter pour publier un commentaire.
Je pense que vous devez dessiner votre propre
CheckedListBox item
comme ceci:Si vous souhaitez définir
CheckedColor
différemment pour chaque élément, vous devez stocker lesCheckedColor
de réglage pour chaque élément (comme dans une Collection) et de référence de laCheckedColor
à l'aide deIndex
. Cependant, je pense que c'est un peu beaucoup de travail à faire. Donc, si vous avez une telle exigence, leListView
plutôt serait le mieux.merci pour votre réponse, je ne suis pas sûr à ce sujet. Comme je comprends la
e.Index
doit être valide dans le gestionnaire d'événements (parce que le produit n'existe pas avant le dessin est traitée sur elle). Le code ici est bien sûr pas bien testé. Je suis également pas sûr de savoir comment vous pourriez faire glisser et de déposer un élément de la liste sur le concepteur (comme je me souviens bien ce n'est pas possible avec la norme par le concepteur windows form). Votre commentaire est toujours valable pour les autres afin d'améliorer le code. Enfin, je n'ai pas programmé avec les winforms pendant des années, pas vraiment intéressé à elle maintenant. Merci.wow, c'était une réaction rapide^^ après 3 ans seulement 25 minutes temps de réaction ^-^ de toute façon, je vous offre un edit 🙂 Et tu as une idée de comment créer un ControllBox qui ressemble à ça (ou si il en existe un) lien
si vous voulez dire que la case à cocher à l'image de ce lien, alors je dirais que ce n'est pas facile. Le cochez ressemble dessinés à la main. Peut-être que vous avez besoin pour préparer un transparent tique et essayez de le rendre (ou tout simplement placer) sur le dessus de la case, la case du carré devrait également être établi à l'intérieur et donner une marge autour de la (pour les graduations doivent être rendus). Il n'est pas facile quand la tique marque peut montrer sur le dessus de d'autres contrôles autour de, ce qui signifie que vous pouvez voir tous les contrôles par derrière dans les limites de la coche. Vous pouvez rechercher pour le contrôle personnalisé liées à la transparence bground.
Comme je l'ai dit, je n'ai pas programmé avec les Winforms depuis des années, donc je ne peux pas vous aider plus. La prochaine INTERFACE utilisateur tech vous devez suivre est WPF 🙂 c'est vraiment cool une fois que vous voulez construire INTERFACE utilisateur riche, en plus, ça change la façon de programmer une application Windows de manière significative.
OriginalL'auteur King King
Je pense que vous devriez essayer
ListView
au lieu de checkedListBox. Il a des propriétés nécessaires et pourraient être personnalisé comme vous le souhaitez. Juste mettreCheckboxes
propriététrue
, et puis dans votre code ajouter forecolor comme ça:OriginalL'auteur LbISS
Depuis qu'il est plutôt compliqué de tirer la chose vous-même, vous pouvez laisser l'original de contrôle de dessiner lui-même-juste en jouant sur la couleur. C'est ma suggestion:
OriginalL'auteur Mattias Larsson
Expansion sur @Mattias réponse, j'ai fait ce contrôle personnalisé pour l'adapter à mes besoins. J'en avais besoin pour avoir des couleurs en fonction d'autres facteurs que la valeur Cochée.
Utilisation:
OriginalL'auteur foamy
La accepté de répondre à fonctionné pour moi, mais il a besoin de modifier si vous souhaitez désactiver le CustomCheckedListBox.
J'ai modifié le code comme suit: -
J'ai changé le " CheckBoxRenderer.DrawCheckBox... " ligne de
et puis j'ai changé le 'l'aide de (badigeonner au Pinceau = new SolidBrush..." ligne de
Cela a provoqué l'activation/la désactivation de travailler pour moi.
OriginalL'auteur ZedLepplin