Je travaille sur un projet mettant à jour leur application WinForms UI pour être plus cohérent avec les tailles. Les commandes de Textbox et de Combobox ont des hauteurs différentes par défaut, même avec la même police. J'ai été capable de redimensionner les zones de texte en éteignant l'automobile, mais le texte étreint toujours le haut du contrôle, laissant un écart ci-dessous. p>
Y a-t-il un moyen de centrer le texte verticalement dans le contrôle? p>
5 Réponses :
Si vous désactivez Pour diverses raisons ennuyeuses, Sur votre enfin, ajoutez à Le contrôle de l'utilisateur Tout Si vous vouliez obtenir une super-fantaisie avec ceci, vous pouvez même remplacer Ceci Même approche fonctionne pour un autosize code> sur un contrôle, il doit s'agir d'une étiquette code> code>, puisque
textbox code> n'a pas de
Autosize code> Propriété. La propriété
textalign code> d'une étiquette code> est de type
contentientaligment code>, de sorte que vous pouvez définir un alignement horizontal et vertical.
textboxes code> dans Windows sont destinés à ajuster automatiquement leurs hauteurs à la police utilisée. Pour contrôler la hauteur et le centre vertical du texte, vous pouvez créer rapidement un
USERCONTROL CODE>, que vous pouvez utiliser pour remplacer tous vos
textboxes code> avec. P>
usingontrol code>, définissez le
Borderstyle code> sur
fixe3d code> et le backcolor code> sur
sur
system.window code >. Ajouter un
Textbox Code> et définissez son
Borderstyle code> sur
Aucun code>. Dans l'événement de redimensionnement du contrôle, ajoutez du code qui rend le
Textbox code> de la même largeur que la zone client de la commande de l'utilisateur (comptant les pixels de bordure) et l'aligne à gauche (c'est-à-dire
textbox1.left = 0; code>) et la verticalement le centre (par exemple,
textbox1.top = (this.height - textbox1.height) / 2; code>). P>
textbox code> -Type et événements dont vous avez besoin (probablement texte et
textchanged code>, je vais deviner) et les câbler pour qu'ils passent à la < code> textbox code> à l'intérieur de votre contrôle, comme celui-ci: p>
Textalign code> propriété avec une qui est en fait de type
contentialIgnment code> (comme l'étiquette), puis alignez la zone de texte
interne code> pour correspondre. P>
Combobox code>, bien qu'il ait l'air légèrement étrange. Avec le
Combobox code>, vous définissez sa propriété
Flattsyle CODE> à plat - sinon vous en avez traite la même chose que celle d'une zone de texte code>. Il semblera étrange car la boîte de flèche déroulante ne sera pas tout à fait en haut et en bas du panneau. P> p>
Tout comme un fyi, il y a en fait une propriété autosize sur des boîtes de texte. Il ne se présentera tout simplement pas dans la feuille de propriétés ni automatiquement en raison de décorations d'attributs. Mais mytextbox.Autosize = false; Compilera et la mise dans le constructeur d'un contrôle héritée entraînera une zone de texte redimensionnable.
Noté. Cela fait des années que je suis arrêté d'essayer de faire ressembler des contrôles Windows différents que la norme, alors je suis un peu rouillé. Il est intéressant de noter que l'IntelliSense dit "Cette propriété n'est pas pertinente pour cette classe", même si cela est évidemment est i> (le régler sur False fait effectivement la hauteur réglable).
Je suppose que la réponse plus facile est la suivante: Basculer vers WPF. Tout a une itinérance verticale et une propriété horizontaleContentalIntientalIntiLIntiLImPling.
Je pense que c'est précisément pourquoi ils ont caché la hauteur de la propriété - l'ajustement est inutile si vous ne pouvez pas ajuster l'alignement. J'essaie de voir votre solution maintenant pour voir si cela fonctionnera pour nous.
Je suis à peu près sûr qu'il y a une API Win32-API, de manière verticale d'aligner verticalement une zone de texte, mais je ne peux pas le trouver. Je pense que la voie de contrôle de l'utilisateur serait moins de travail, finalement, et vous auriez plus de contrôle sur la sortie finale.
Textbox.Autoszie existe mais Visual Studio Intellissez Masquer ceci.
Créer un contrôle Retirez les bordures, rendez l'arrière-plan de la même couleur que le parent (par défaut). Remplacez la police pour définir la police code> de la police code> et je pense que vous avez un alignement verticalement aligné vide code> et inclure votre texte
code> en tant qu'enfant. Ensuite, lorsque le parent
contrôle code> ou la zone de texte code>, redimensionner réalignez votre
Textbox code> Contrôle du milieu verticalement. P>
de texte code>. P>.
Une solution très simple consiste à utiliser un et désactiver l'ajout / la suppression des lignes et vous avez une zone de texte qui aligne parfaitement le texte. P> datagridview code> avec 1 colonne, 1 rangée, des en-têtes de colonne et de ligne non visibles et do
Vous pouvez simplement ajuster le rembourrage - vertical plus élevé. Propriété dans la mise en page de la catégorie. P>
Non, tu ne peux pas. Le contrôle de la zone de texte n'a pas de propriété de rembourrage.
Avez-vous essayé la solution code> TableLayOntPanel CODE> pour fournir un alignement vertical? Vous pouvez ensuite ajuster la hauteur comme vous le souhaitez, à travers des événements de manière dynamique, ou en utilisant une valeur fixe, ou avec le Il suffit d'ajouter un Le En général, TableLayOntPanel Code> S 'Strong> Autosize de rangée for forte> Fonction. P>
TableLayOntPanel code> pour contenir la zone de texte code>. Ce
TableLayoutContainer code> a 1 colonne et 3 rangées. La zone de texte
code> doit être placée dans la deuxième ligne. La première et les dernières lignes sont réglées à une hauteur de 50% (elles n'utilisent réellement que la "hauteur restante"). Une fois que vous avez placé le
textbox code> dans la deuxième ligne, cette ligne peut ensuite être réglée sur une valeur absolue de votre choix ou de la taille automatique. P>
TableLayOntPanel code> a son propre contrôle de largeur et de hauteur. Mais si vous placez ce
TableLayOntPanel CODE> à l'intérieur d'une cellule d'un autre
TableLayOntPanel Code>, rappelez-vous simplement de définir la taille automatique de votre nouveau
TableLayOntPanel Code> sur TRUE , donc il peut s'adapter à la taille de la cellule. P>
TableLayOntPanels CODE> est d'une grande aide pour votre conception, je vous recommande de les utiliser. P>