По умолчанию объекты в Поле комбинированного списка C# выравниваются по левому краю. Есть ли любые опции, доступные для изменения этого выравнивания кроме переопределения метода DrawItem и установки поля комбинированного списка drawmode-> DrawMode. OwnerDrawFixed?
Удачи
В WPF это так же просто, как указать ItemContainerStyle. В Windows Forms это немного сложнее. Без пользовательского рисунка вы можете установить свойство RightToLeft в ComboBox, но это, к сожалению, также повлияет на кнопку раскрывающегося списка.
Поскольку Windows Forms использует собственный ComboBox, а в Windows нет стиля ComboBox, такого как ES_RIGHT , который влияет на выравнивание текста, я думаю, ваш единственный вариант - прибегнуть к рисованию владельцем. Вероятно, было бы неплохо создать класс из ComboBox и добавить свойство TextAlignment или что-то в этом роде. Тогда вы применили бы свой рисунок, только если TextAlignment был выровнен по центру или по правому краю.
Вы можете просто установить стиль управления на 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();
}
}