Проблема WinForms ComboBox - PullRequest
0 голосов
/ 23 июня 2010

В приложении Windows Form у меня есть ComboBox1, который инициализируется в функции InitializeComponent ().Я добавляю значения в него в другой функции.

фрагмент:

    public form1()
    {
        InitializeComponent();
        addDataToDropDowns();
    }

У меня проблема в том, что строки, загруженные в ComboBox1, имеют много символов (/ длина) инельзя видеть полностью по ширине.

Возможно ли иметь встроенную горизонтальную полосу прокрутки в ComboBox1, чтобы я тоже мог видеть скрытую часть строки ... ??

Будут оценены любые идеи / предложения!

Спасибо, Ивар

Ответы [ 3 ]

4 голосов
/ 23 июня 2010

На самом деле есть DropDownWidth свойство, которое определяет ширину раскрывающейся области. Таким образом, вы можете иметь узкий элемент управления, который не требует слишком много места в форме, но большая выпадающая область, которая может простираться на любую часть экрана.

3 голосов
/ 23 июня 2010

http://www.codeproject.com/KB/combobox/ComboBoxAutoWidth.aspx

В этом примере кода показано, как захватить событие и расширить поле.

ИЛИ, вы можете использовать ее как отдельную функцию, которую вы вызываете вручную, например так: http://weblogs.asp.net/eporter/archive/2004/09/27/234773.aspx

0 голосов
/ 31 августа 2016

Объединяя ссылки в ответе Каладайна , вот код.Он работает как для строк, так и для объектов, связанных с данными.Метод cbSample_DropDown() связан с событием DropDown ComboBox.

private void AdjustWidthComboBox(ComboBox comboBox)
{
    int width = comboBox.DropDownWidth;
    using (Graphics g = comboBox.CreateGraphics())
    {
        Font font = comboBox.Font;
        int vertScrollBarWidth =
            (comboBox.Items.Count > comboBox.MaxDropDownItems)
            ? SystemInformation.VerticalScrollBarWidth : 0;

        foreach (object item in comboBox.Items)
        {
            string valueToMeasure = comboBox.GetItemText(item);
            int newWidth = (int)g.MeasureString(valueToMeasure, font).Width + vertScrollBarWidth;
            if (width < newWidth)
            {
                width = newWidth;
            }
        }
    }

    comboBox.DropDownWidth = width;
}

private void cbSample_DropDown(object sender, EventArgs e)
{
    AdjustWidthComboBox(sender as ComboBox);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...