C# - Régler la taille de la zone de liste déroulante
Je veux régler la hauteur d'une ComboBox
(à partir de la Windows Forms Contrôles) à X au cours de l'exécution.
J'ai
- la
DrawMode
Propriété définie àOwnerDrawVariable
, de préciser que la
les éléments sont dessinés manuellement; - la
IntegralHeight
Propriété est définie sur false, afin d'éviter laControl
automatiquement le redimensionnement de lui-même; - la
ItemHeight
Propriété de laComboBox
également mis à X.
J'ai aussi remplacé le DrawItem
et MeasureItem
événements pour la zone de liste déroulante des articles (voir code ci-dessous)
Cependant, réglage de la Height
de la zone de liste déroulante lors de l'exécution ne fonctionne que si le DropDownStyle
est fixé à Simple
.
- Je faire cela de deux manières, par programme (modification de l' ComboBox
's Height
ou Size
) de la propriété, et à l'aide d'un PropertyGrid
de Contrôle que j'ai sur mon App.
Lorsque j'ai mis la hauteur d'un DropDown
ou DropDownList
ComboBox
, j'ai remarqué que Windows automatiquement les changements de sa hauteur à une autre valeur: Y (qui, après un peu de débogage, j'ai remarqué à X + 6 pour une certaine raison).
Ce qui me manque? Pourquoi est-ce arrivé?
Voici le code à partir de l'gestionnaires:
private void DrawItemHandler(object sender, DrawItemEventArgs e)
{
//Create a new font to write the item
Font ComboItemFont = new Font(FontFamily.GenericSansSerif, 8, FontStyle.Regular);
e.DrawBackground();
e.DrawFocusRectangle();
//Write the item's value
e.Graphics.DrawString(((ComboBox) sender).Items[e.Index].ToString(),
ComboItemFont,
new SolidBrush(Color.Black),
e.Bounds);
//Update the source's font to match the current font
((Control) sender).Font = ComboItemFont;
}
private void MeasureItemHandler(object sender, MeasureItemEventArgs e)
{
//Do nothing
}
DrawItem
et MeasureItem
sont pour la liste de la partie de la commande, pas la partie édition.Pas sûr que je sais ce que tu veux dire. Vous définissez le contrôle de la police au cours de la DrawItemHandler de la méthode qui va certainement changer la hauteur de la zone de liste déroulante, puisque la hauteur est déterminée par le contrôle de la police. Je voudrais commenter cette ligne.
Je viens de le faire. Le même problème se produit. Donc je suppose que la zone de liste déroulante de la Police n'est pas lié à cette question.
OriginalL'auteur PDoria | 2012-06-20
Vous devez vous connecter pour publier un commentaire.
Vous pouvez également modifier la
Size(Width,Height)
de vue des propriétés dans Visual StudioVotre question : je veux régler la hauteur d'une zone de liste déroulante (à partir de l'Contrôles Windows Forms) pour X au cours de l'exécution. Donc j'ai compris qu'à l'aide de votre Propriété ComboBox.X et de la zone de liste déroulante.Y pour changer la hauteur et la largeur lors de l'exécution et avec mon exemple ci-dessus, je suggère que vous utilisez la Propriété à la zone de liste déroulante.La taille que prend la Largeur & de la Hauteur et de la mettre à exécution
Je ne. J'ai mis ComboBox1.Taille = (X, X) et Windows est toujours en évolution pour (X, Y) au moment de l'exécution. Mais seulement pour Déroulante et DropDownList zones de liste modifiables.
OriginalL'auteur HatSoft