- PR -

背景色の変更

1
投稿者投稿内容
sho
会議室デビュー日: 2004/04/22
投稿数: 3
投稿日時: 2004-04-22 21:47
はじめて投稿いたします。
shoと申します。

VC#.netで画面の開発を行っているのですが、
動的にDataTimeの背景色を変更しなければなりません。
MSDNにはDataTimeのBackColorプロパティの説明があり
背景色を変更できるようなことが書いてあったのですが
力足らずで背景色の変更ができませんでした。

背景色を変更するにはどのようにすればよいのでしょうか。
よろしくお願いします
ant
常連さん
会議室デビュー日: 2004/03/24
投稿数: 44
投稿日時: 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
sho
会議室デビュー日: 2004/04/22
投稿数: 3
投稿日時: 2004-04-23 09:50
早速のご回答ありがとうございます。

はぁ、バグなんですねぇ・・・
別な方法考えます。
sho
会議室デビュー日: 2004/04/22
投稿数: 3
投稿日時: 2004-04-23 10:54
たびたびすみません

ちょこっと思い出したんですが、
MFCでDateTimePickerの背景色を変更したいときは
DateTimePickerのサブクラスを作成し、
コントロールの型は、このサブクラスとします。
で、このサブクラス中にOnEraseBkgndのイベントを作成して
FillSolidRectを呼んでやると背景色の変更ができたました。

VC#.netではそこら辺の応用できないでしょうか?
すみませんが、よろしくお願いします。
ant
常連さん
会議室デビュー日: 2004/03/24
投稿数: 44
投稿日時: 2004-04-24 15:00
確かにOnPaintBackgroundメソッドなどをオーバーライドして、
Graphics.FillRectangle メソッド等を呼び出せばできそうなのですが、
DateTimePickerコントロールのset_BackColor周辺のBUGなので、
OnPaintBackgroundをオーバーライドしても再描画の時には呼び出してもらえません。
従って、DateTimePickerコントロールのWndProcメソッドをオーバーライドして
メッセージを処理すれば、できるかもしれません。

他には、背景色を変更するときなど適当なときにTextBox(ComboBox)と差し替えるということもできそうです。
PAO
ベテラン
会議室デビュー日: 2004/10/21
投稿数: 66
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)