2016年7月21日 星期四

在 WinForm 下,ComboBox 下拉選單內容太長時,文字會被切掉

在 WinForm 下,ComboBox 下拉選單內容太長時,文字會被切掉










// 動態改變顯示的長度
private void Form1_Load(object sender, EventArgs e)
{
    DataTable dt = new DataTable();
    dt.Columns.Add("myID");
    dt.Columns.Add("myValue");
    dt.Rows.Add(new object[] { "1", "Bermuda 百慕達" });
    dt.Rows.Add(new object[] { "2", "Bosnia and Herzegovina 波希尼亞及赫塞哥維那" });
    cbxExamination.DataSource = dt;
    cbxExamination.DisplayMember = "myValue";
    cbxExamination.ValueMember = "myID";
    // 在資料繫結後加入以下語法
    SetDropDownWidth(comboCountry);
}
/// <summary>
/// 設定下拉選單下拉後的長度為最長內容的長度
/// </summary>
/// <param name="myCombo"></param>
/// <returns></returns>
private void SetDropDownWidth(ComboBox myCombo)
{
    int maxSize = 0;
    System.Drawing.Graphics g = CreateGraphics();
    for (int i = 0; i < myCombo.Items.Count; i++)
    {
        myCombo.SelectedIndex = i;
        SizeF size = g.MeasureString(myCombo.Text, myCombo.Font);
         if (maxSize < (int)size.Width)
         {
             maxSize = (int)size.Width;
          }
    }
    myCombo.DropDownWidth = myCombo.Width;
    if (myCombo.DropDownWidth < maxSize)
    {
        myCombo.DropDownWidth = maxSize;
    }
}
結果如下

沒有留言:

張貼留言