Ich muss meine Combobox wie dieses Bild anpassen.Zentrum Text in benutzerdefinierten Combobox
Mein Code arbeitete fine.But Es ist mit 2 Fragen:
1.den Textzug nach links, wenn ich, wie unten
2.das Hintergrund wiederum das Fenster minimieren zu grün, wenn ein anderes Fenster meine Anwendung bedeckt.
Hier ist mein Code:
//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);
}
}
}
so etwas ist falsch?
Ihr Code wird nicht kompiliert; mindestens zwei schließende Curlies fehlen. Bitte poste nur echten Code! - Haben 'e.Bounds' und/oder' ClientRectangle' tatsächlich Platz für den Pfeil? Ansonsten: Die Fehlersituationen klingen komisch. Nach dem Minimieren, und ich nehme an, dass das Wiederherstellen funktioniert, bleibt die Ausrichtung/Platzierung falsch? – TaW
Entschuldigung für meinen Fehler.ja, ich denke das Problem ist e.Bounds. Combobox Größe ist 135, 34 und e.Bouds ist 133. Wenn Sie das Fenster minimieren, ist e.Bounds 112. e.Bounds ändert sich beim Minisieren. Wie es zu beheben? @ TaW – Jandy