在微軟 .Net 原生的物件之中,ComboBox 是沒有可以讓文字置中選項可以選擇,但有時候為了整體視窗的統一性,置中這件事情也是會變得相當重要呢!讓我們接續著看下去吧!
程式碼
在 ComboBox 中加入 DrawItem 事件
private void comboBox1_DrawItem(object sender, DrawItemEventArgs e)
{
ComboBox cbx = sender as ComboBox;
if (cbx != null)
{
e.DrawBackground();
if (e.Index >= 0)
{
//文字置中
StringFormat sf = new StringFormat();
sf.LineAlignment = StringAlignment.Center;
sf.Alignment = StringAlignment.Center;
Brush brush = new SolidBrush(cbx.ForeColor);
if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
brush = SystemBrushes.HighlightText;
//重繪字串
e.Graphics.DrawString(cbx.Items[e.Index].ToString(), cbx.Font, brush, e.Bounds, sf);
}
}
}
要先加入下面這一行,才可以改變 ComboBox,不然會沒有效果。
comboBox1.DrawMode = DrawMode.OwnerDrawFixed;
可以加到一開始 Form 在建置之後
public Form1()
{
InitializeComponent();
comboBox1.DrawMode = DrawMode.OwnerDrawFixed;
}