トップ回答者
Windows7とデータベースグリッドなどのコンボボックスを選択状態にすると見づらい

質問
回答
-
はじめまして。
コンボボックスの選択状態時の青色は、”強調色”のことですよね。
これは、自分でコンボボックスの描画処理を実装すれば実現できます。
ただし、システムの設定色(HighLight)を無視していいかどうかは、仕様の確認が必要と思われます。
一番簡単なのは、Windows7上で、クラシックモードで動かしてもらう事です。
<コーディングによる対策>
- コンボボックス(ここでは、"comboBox1"とします)のプロパティのうち「DrawMode」を「OwnerDrawFixed」に設定する。
- コンボボックスのイベント処理(DrawItemイベント)を以下の様な感じで実装すると出来ると思われます。
private void comboBox1_DrawItem(object sender, DrawItemEventArgs e) { //背景色を白色で塗りつぶす e.Graphics.Clear(Color.White); if (comboBox1.Focused == true) { //強調色(水色)で塗りつぶし e.Graphics.FillRectangle(new SolidBrush(Color.LightBlue), e.Bounds); //フォーカスを示す四角形を描画 e.DrawFocusRectangle(); } //文字列の描画 using (Font oFont = comboBox1.Font.Clone() as Font) { if (e.Bounds.Y == 3) //こうやれば出来るが、ここらへんはどうするか検討必要 { e.Graphics.DrawString( comboBox1.Items[e.Index] as string, oFont, Brushes.Black, e.Bounds); } else { for (int i = 0; i < comboBox1.Items.Count; i++) { e.Graphics.DrawString( comboBox1.Items[i] as string, oFont, Brushes.Black, e.Bounds.X, e.Bounds.Height * i); } } } }
見て分かる通り、単に、描画をするだけなのですが、後は、お好きなように、
線なり、四角なり、いろいろ好みに応じて描画すれば自分だけのオリジナルコンボボックスが完成です。
参考下さい。
すべての返信
-
はじめまして。
コンボボックスの選択状態時の青色は、”強調色”のことですよね。
これは、自分でコンボボックスの描画処理を実装すれば実現できます。
ただし、システムの設定色(HighLight)を無視していいかどうかは、仕様の確認が必要と思われます。
一番簡単なのは、Windows7上で、クラシックモードで動かしてもらう事です。
<コーディングによる対策>
- コンボボックス(ここでは、"comboBox1"とします)のプロパティのうち「DrawMode」を「OwnerDrawFixed」に設定する。
- コンボボックスのイベント処理(DrawItemイベント)を以下の様な感じで実装すると出来ると思われます。
private void comboBox1_DrawItem(object sender, DrawItemEventArgs e) { //背景色を白色で塗りつぶす e.Graphics.Clear(Color.White); if (comboBox1.Focused == true) { //強調色(水色)で塗りつぶし e.Graphics.FillRectangle(new SolidBrush(Color.LightBlue), e.Bounds); //フォーカスを示す四角形を描画 e.DrawFocusRectangle(); } //文字列の描画 using (Font oFont = comboBox1.Font.Clone() as Font) { if (e.Bounds.Y == 3) //こうやれば出来るが、ここらへんはどうするか検討必要 { e.Graphics.DrawString( comboBox1.Items[e.Index] as string, oFont, Brushes.Black, e.Bounds); } else { for (int i = 0; i < comboBox1.Items.Count; i++) { e.Graphics.DrawString( comboBox1.Items[i] as string, oFont, Brushes.Black, e.Bounds.X, e.Bounds.Height * i); } } } }
見て分かる通り、単に、描画をするだけなのですが、後は、お好きなように、
線なり、四角なり、いろいろ好みに応じて描画すれば自分だけのオリジナルコンボボックスが完成です。
参考下さい。