- - PR -
背景色の変更
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-04-22 21:47
はじめて投稿いたします。
shoと申します。 VC#.netで画面の開発を行っているのですが、 動的にDataTimeの背景色を変更しなければなりません。 MSDNにはDataTimeのBackColorプロパティの説明があり 背景色を変更できるようなことが書いてあったのですが 力足らずで背景色の変更ができませんでした。 背景色を変更するにはどのようにすればよいのでしょうか。 よろしくお願いします |
|
投稿日時: 2004-04-22 23:38
未だに解決されていないBUGですので、他の方法を考えた方がいいかもしれません。
http://support.microsoft.com/default.aspx?scid=kb;ja;832041 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=7&topic=8841 |
|
投稿日時: 2004-04-23 09:50
早速のご回答ありがとうございます。
はぁ、バグなんですねぇ・・・ 別な方法考えます。 |
|
投稿日時: 2004-04-23 10:54
たびたびすみません
ちょこっと思い出したんですが、 MFCでDateTimePickerの背景色を変更したいときは DateTimePickerのサブクラスを作成し、 コントロールの型は、このサブクラスとします。 で、このサブクラス中にOnEraseBkgndのイベントを作成して FillSolidRectを呼んでやると背景色の変更ができたました。 VC#.netではそこら辺の応用できないでしょうか? すみませんが、よろしくお願いします。 |
|
投稿日時: 2004-04-24 15:00
確かにOnPaintBackgroundメソッドなどをオーバーライドして、
Graphics.FillRectangle メソッド等を呼び出せばできそうなのですが、 DateTimePickerコントロールのset_BackColor周辺のBUGなので、 OnPaintBackgroundをオーバーライドしても再描画の時には呼び出してもらえません。 従って、DateTimePickerコントロールのWndProcメソッドをオーバーライドして メッセージを処理すれば、できるかもしれません。 他には、背景色を変更するときなど適当なときにTextBox(ComboBox)と差し替えるということもできそうです。 |
|
投稿日時: 2007-03-14 14:38
私もやり方を探していましたら、
C#のMLに答えを書いてくれていた人がいらっしゃいました。 ちょっと変えていますが・・・ DateTimePicker を継承したコントロールで・・・ protected override void WndProc(ref Message m) { if ( m.Msg == 0x14 ) // WM_ERASEBKGND { Graphics g = Graphics.FromHdc( m.WParam ); SolidBrush backBrush = new SolidBrush( this.BackColor ); g.FillRectangle( backBrush, base.ClientRectangle ); backBrush.Dispose(); g.Dispose(); return; } base.WndProc( ref m ); } で、いけました。 |
1