Мне нужно настроить мои комбобокс, как показано на рисунке.Текст центра в пользовательском Combobox
Мой код работал fine.But Это с 2 вопроса:
1.the текста двигаться влево, когда я свернуть окно, как показано ниже
2.the фоне поворота на зеленый, когда другое окно закрывает мое приложение.
Вот мой код:
//DrawItem
protected override void OnDrawItem(DrawItemEventArgs e)
{
e.DrawBackground();
e.DrawFocusRectangle();
if (e.Index >= 0) {
Graphics g = e.Graphics;
Brush brs = ((e.State & DrawItemState.Selected) == DrawItemState.Selected) ?
new SolidBrush(SelectedBackColor) : new SolidBrush(e.BackColor);
g.FillRectangle(brs, e.Bounds);
using (StringFormat sformat = new StringFormat()) {
sformat.LineAlignment = StringAlignment.Center;
sformat.Alignment = StringAlignment.Center;
e.Graphics.DrawString(this.Items[e.Index].ToString(), e.Font, new SolidBrush(e.ForeColor), e.Bounds, sformat);
}
//paint
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
if (index >= 0) {
using (Brush br = new SolidBrush(this.ForeColor)) {
StringFormat sformat = new StringFormat();
sformat.LineAlignment = StringAlignment.Center;
sformat.Alignment = StringAlignment.Center;
e.Graphics.DrawString(this.Text, this.Font, br, this.ClientRectangle, sformat);
e.Graphics.DrawImage(Resource1.arrow,this.ClientRectangle.Right - 34, 0,32,32);
}
}
}
так, что не так?
ваш код не компилируется; по крайней мере два закрывающих колена отсутствуют. Пожалуйста, напишите только реальный код! - Действительно ли 'e.Bounds' и/или' ClientRectangle' фактически оставляют место для стрелки? Кроме этого: Ошибочные ситуации звучат забавно. После минимизации и, я полагаю, восстановление, выравнивание/размещение остаются неправыми? – TaW
извините за мою ошибку. Я думаю, проблема в том, что это e.Bounds. Размер Combobox равен 135, 34 и e.Bouds равен 133. При минимизации окна e.Bounds - 112. e.Bounds изменяет размер при минировании. Как это исправить? @TaW – Jandy