1

動的に生成していくつかのアイテムを入力するComboBoxがあります。このコントロールの幅を最長のアイテムの幅に設定したいと思います。一部のテキストの表示幅をカウントするにはどうすればよいですか?

編集:私はWindowsフォームを使用していますが、asp.netでも実行したいと思います

4

4 に答える 4

2

依存します。ASP.NETまたはWindowsフォームまたはWPFを使用していますか?固定幅またはプロポーショナルフォントを使用していますか?

Windowsフォームを使用している場合は、テキストの幅を確認するために MeasureString()を呼び出す必要があります。

ASP.NETを使用している場合は、MeasureString()のようなことを行うことができますが、ブラウザーでレンダリングされているフォントが正確にわからないため、スクリプトにそれを入れることはできません。

于 2008-12-21T16:00:02.487 に答える
1

Graphics.MeasureStringメソッド を参照してください。http://msdn.microsoft.com/en-us/library/9bt8ty58.aspx

于 2008-12-21T16:00:17.853 に答える
1

幅を明示的に設定しない場合、ブラウザはそれを最も長い項目の長さにレンダリングします (もちろん、質問が Web フォームに関するものである場合)。

于 2008-12-21T16:04:36.300 に答える
0

次のコードを使用して、ドロップダウン イベントをコンボボックスに追加します。

private void comboBox_DropDown(object sender, EventArgs e)
        {
            Graphics g = (sender as ComboBox).CreateGraphics();
            float longest = 0;
            for (int i = 0; i < (sender as ComboBox).Items.Count; i++)
            {
                SizeF textLength = g.MeasureString((sender as ComboBox).Items[i].ToString(), (sender as ComboBox).Font);

                if (textLength.Width > longest)
                    longest = textLength.Width;
            }

            if (longest > 0)
                (sender as ComboBox).DropDownWidth = (int)longest;
        }
于 2019-04-07T11:11:54.920 に答える