Windows Forms: можно ли нарисовать элементы выпадающего списка, выровненные по правому краю? - PullRequest
1 голос
/ 29 августа 2009

В Windows Forms возможно ли настроить раскрывающийся список поле со списком , чтобы элементы были правильно выровнены?

Значение по умолчанию выровнено по левому краю, например:

Combobox

Ответы [ 3 ]

3 голосов
/ 29 августа 2009

Да, но вам нужно будет самостоятельно вывести комбинированный список, чтобы вы могли выровнять текст, см. http://social.msdn.microsoft.com/forums/en-US/winformsdatacontrols/thread/0438b63a-5f6b-401c-8ea9-cd9e950ed6e1/ для получения дополнительной информации.

1 голос
/ 29 августа 2009

Я установил событие DrawItem в выпадающем списке. Также установите

this.comboBox1.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;

Это код, который я использовал для DrawItem:

    private void comboBox1_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
    {
        var rc = new System.Drawing.Rectangle(e.Bounds.X , e.Bounds.Y,
                                     e.Bounds.Width, e.Bounds.Height);

        var sf = new System.Drawing.StringFormat
        {
            Alignment = System.Drawing.StringAlignment.Far
        };

        string str = (string)comboBox1.Items[e.Index];

        if (e.State == (DrawItemState.Selected | DrawItemState.NoAccelerator
                          | DrawItemState.NoFocusRect) ||
             e.State == DrawItemState.Selected)
        {
            e.Graphics.FillRectangle(new System.Drawing.SolidBrush(System.Drawing.Color.CornflowerBlue), rc);
            e.Graphics.DrawString(str, this.comboBox1.Font, new System.Drawing.SolidBrush(System.Drawing.Color.Cyan), rc, sf);
        }
        else
        {
            e.Graphics.FillRectangle(new System.Drawing.SolidBrush(System.Drawing.Color.White), rc);
            e.Graphics.DrawString(str, this.comboBox1.Font, new System.Drawing.SolidBrush(System.Drawing.Color.Black), rc, sf);
        }
    }

Вот как это выглядит:

alt text

1 голос
/ 29 августа 2009

Измените свойство ComboBox "RightToLeft" на TRUE.

Примечание. Стрелка раскрывающегося списка теперь будет слева от элемента управления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...