12

かなり大きな文字列を含む可能性DataGridViewのある aが含まれています。ComboBoxドロップダウンリスト自体を展開するか、少なくとも文字列をワードラップして、ComboBox列幅のサイズを変更しなくてもユーザーが文字列全体を表示できるようにする方法はありますか?

4

3 に答える 3

8

これを解決するために私がしたことは、うまくいきます...

public class ImprovedComboBox : ComboBox
{
    public ImprovedComboBox()
    {



    }
    public object DataSource
    {
        get { return base.DataSource; }
        set { base.DataSource = value; DetermineDropDownWidth(); }

    }
    public string DisplayMember
    {
        get { return base.DisplayMember; }
        set { base.DisplayMember = value; DetermineDropDownWidth(); }

    }
    public string ValueMember
    {
        get { return base.ValueMember; }
        set { base.ValueMember = value; DetermineDropDownWidth(); }

    }
    private void DetermineDropDownWidth()
    {

        int widestStringInPixels = 0;
        foreach (Object o in Items)
        {
            string toCheck;
            PropertyInfo pinfo;
            Type objectType = o.GetType();
            if (this.DisplayMember.CompareTo("") == 0)
            {
                toCheck = o.ToString();

            }
            else
            {
                pinfo = objectType.GetProperty(this.DisplayMember);
                toCheck = pinfo.GetValue(o, null).ToString();

            }
            if (TextRenderer.MeasureText(toCheck, this.Font).Width > widestStringInPixels)
                widestStringInPixels = TextRenderer.MeasureText(toCheck, this.Font).Width;
        }
        this.DropDownWidth = widestStringInPixels + 15;
    }
}
于 2011-01-26T22:51:26.190 に答える
-3

私が知っていることではありませんが、一部のブラウザーは、必要に応じてボックスの幅を超えてドロップダウン メニューの幅を拡張するほどスマートです。ユーザーベースを少し制御できれば、Firefox と Chrome がそれを実行できることを私は知っています。

本当に必死なら、フラッシュ ベースのコンボ ボックスでデータを html にポストするのはどうですか?

于 2011-01-14T00:16:56.330 に答える