私はこのイメージのように私のコンボボックスをカスタマイズする必要があります。私はカスタムコンボボックスの中央のテキスト
2.背景ターン以下のようにウィンドウを最小化し、左へ
1.テキストを移動:それは2つの問題を持っていますfine.But私のコードが働い
別のウィンドウが自分のアプリケーションをカバーしているときに緑に変わります。ここで
私のコードです:
//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);
}
}
}
ので、何が間違っていますか?ドロップダウンstate.Iは前DroppedDownをチェックアウトし、私は問題を発見
SizeF size = new SizeF();
size = e.Graphics.MeasureString(this.Text, this.Font);
PointF DrawPoint = new PointF((this.Width - size.Width)/2, (this.Height - size.Height)/2);
e.Graphics.DrawString(this.Text, this.Font, br, DrawPoint, sformat);
コードはコンパイルされません。少なくとも2つの閉じ括弧が欠けている。実際のコードだけを投稿してください! - 'e.Bounds'や' ClientRectangle'は実際に矢印のスペースを残しますか?それ以外の場合:エラーの状況は面白く聞こえます。最小化した後、復元を前提にして、配置/配置が間違っていますか? – TaW
私の間違い申し訳ありません。私は問題がe.Boundsだと思う。コンボボックスのサイズは135,34、e.Boudsは133です。ウィンドウを最小化すると、e.Boundsは112になります。e.Boundsは、ミニマイズするとサイズが変更されます。どのように修正するのですか?@TaW – Jandy