在Combobox中对齐文本

我想在combobox中对齐我的文本,以便它将显示在combobox的中心告诉我如何执行此操作也可以看到combobox周围有一个默认边框,当它处于焦点时我怎样才能删除该边框请解决我的两个问题谢谢

ComboBox不支持此function。 确切的原因在时间的迷雾中消失了,ComboBox自九十年代初以来一直存在,但肯定与文本框部分中的文本与下拉列表中的文本对齐的尴尬有关。 使用DrawItem的自定义绘图也无法解决,只会影响下拉项的外观。

作为一种可能的解决方法,您可以做一些古怪的事情,比如用空格填充项目字符串,使它们看起来居中。 您需要TextRenderer.MeasureText()来确定要为每个项目添加多少空格。

你所谈论的“边界”不是边框,而是焦点矩形。 你无法摆脱这种情况,Windows拒绝让你创建一个不会显示焦点控件的UI。 喜欢键盘而不是鼠标的用户关心这一点。 没有解决方法。

本文将为您提供帮助: http : //blog.michaelgillson.org/2010/05/18/left-right-center-where-do-you-align/

诀窍是将ComboBox的DrawMode -Property设置为OwnerDrawFixed以及订阅其事件DrawItem

您的活动应包含以下代码:

 // Allow Combo Box to center aligned private void cbxDesign_DrawItem(object sender, DrawItemEventArgs e) { // By using Sender, one method could handle multiple ComboBoxes ComboBox cbx = sender as ComboBox; if (cbx != null) { // Always draw the background e.DrawBackground(); // Drawing one of the items? if (e.Index >= 0) { // Set the string alignment. Choices are Center, Near and Far StringFormat sf = new StringFormat(); sf.LineAlignment = StringAlignment.Center; sf.Alignment = StringAlignment.Center; // Set the Brush to ComboBox ForeColor to maintain any ComboBox color settings // Assumes Brush is solid Brush brush = new SolidBrush(cbx.ForeColor); // If drawing highlighted selection, change brush if ((e.State & DrawItemState.Selected) == DrawItemState.Selected) brush = SystemBrushes.HighlightText; // Draw the string e.Graphics.DrawString(cbx.Items[e.Index].ToString(), cbx.Font, brush, e.Bounds, sf); } } } 

组合框,预览

要右对齐项目,只需将StringAlignment.Center替换为StringAlignment.Center StringAlignment.Far

将’RightToLeft’属性设置为true。 它不会反转字符序列。 它只是正确的理由。

你不能在Windows窗体控件专用combobox中执行此操作

在控件的自定义方面,Winforms相当不灵活。 如果您正在寻找更加个性化的用户体验,那么我建议您考虑创建一个允许您定义自定义控件的WPF应用程序。 这需要一些工作,所以如果你真的发现它是必要的,那么它只是你想要进行的事情。 这是一个很好的网站,可以帮助您入门http://www.wpftutorial.net/

您可以通过在查询中的显示成员之前添加空格来执行此类操作

例如 :

 combobox1.DataSource = Query(Select col1 , (' '+col2) as Col2 from tableName) combobox1.DisplayMember = "Col2"; combobox1.ValueMember = "col1";