【c#】コンボボックスのドロップダウンリストの幅を項目の文字数に合せて調整する方法

C#

コンボボックスのドロップダウンリストの幅を項目の文字数に合せて調整する方法を紹介します。

この場合は、2番目のアイテムの文字長さに合せて幅が調整されています

以下、ソースコードのサンプルとなります。comboBox1という名前のコンボボックスに対してドロップダウンリストの幅を調整します。

//コンボボックスで表示する値をDataTableに用意しておく
System.Data.DataTable Table = new System.Data.DataTable();
Table.Columns.Add("id", typeof(int));
Table.Columns.Add("Item_name", typeof(string));
Table.Rows.Add(new Object[] { 1, "aaaaaaaaaaaaaaaaaa" });
Table.Rows.Add(new Object[] { 2, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba" });
Table.Rows.Add(new Object[] { 3, "cccccccccccc" });
Table.Rows.Add(new Object[] { 4, "dddddddddddddddddddddddd" });
Table.Rows.Add(new Object[] { 5, "e" });

//DataTableのItem_name列の最大幅を求めつつ、コンボボックスに値を設定する
// 最大幅はmaxSizeへ格納する
int maxSize = 0;
for (int i1 = 0; i1 < Table.Rows.Count; i1++)
{
    maxSize = Math.Max(maxSize, TextRenderer.MeasureText(Table.Rows[i1][1].ToString(), comboBox1.Font).Width);
    comboBox1.Items.Add(Table.Rows[i1][1].ToString());
}

//スクロールバー分を追加しておく
maxSize += 20;

//ドロップダウンリストの幅を設定する
comboBox1.DropDownWidth = maxSize;

これで冒頭のサンプルのような形式でコンボボックスに値が設定されると思います。

参考になれば幸いです。

タイトルとURLをコピーしました