Выровненное по правому краю поле комбинированного списка в C#

По умолчанию объекты в Поле комбинированного списка C# выравниваются по левому краю. Есть ли любые опции, доступные для изменения этого выравнивания кроме переопределения метода DrawItem и установки поля комбинированного списка drawmode-> DrawMode. OwnerDrawFixed?

Удачи

7
задан Pieniadz 18 September 2011 в 11:08
поделиться

2 ответа

В WPF это так же просто, как указать ItemContainerStyle. В Windows Forms это немного сложнее. Без пользовательского рисунка вы можете установить свойство RightToLeft в ComboBox, но это, к сожалению, также повлияет на кнопку раскрывающегося списка.

Поскольку Windows Forms использует собственный ComboBox, а в Windows нет стиля ComboBox, такого как ES_RIGHT , который влияет на выравнивание текста, я думаю, ваш единственный вариант - прибегнуть к рисованию владельцем. Вероятно, было бы неплохо создать класс из ComboBox и добавить свойство TextAlignment или что-то в этом роде. Тогда вы применили бы свой рисунок, только если TextAlignment был выровнен по центру или по правому краю.

2
ответ дан 7 December 2019 в 07:40
поделиться

Вы можете просто установить стиль управления на RightToLeft = RightToLeft .Да , если вы не возражаете против виджета перетаскивания на другой стороне.

или

установите DrawMode = OwnerDrawFixed; и подключите событие DrawItem , затем что-то вроде

    private void comboBox1_DrawItem(object sender, DrawItemEventArgs e)
    {
        if (e.Index == -1)
            return;
        ComboBox combo = ((ComboBox) sender);
        using (SolidBrush brush = new SolidBrush(e.ForeColor))
        {
            e.DrawBackground();
            e.Graphics.DrawString(combo.Items[e.Index].ToString(), e.Font, brush, e.Bounds, new StringFormat(StringFormatFlags.DirectionRightToLeft));
            e.DrawFocusRectangle();
        }
    }
4
ответ дан 7 December 2019 в 07:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: