[C#] 如何讓 ComboBox 文字置中

  在微軟 .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;
}

更改屬性

結果

發表迴響