■26636 / ) |
Re[5]: ボタンクリック描画されるがFormLoadで描画されない |
□投稿者/ 魔界の仮面弁士 (873回)-(2008/10/16(Thu) 11:39:20)
|
■No26622 (ありあり さん) に返信 > おっしゃる通り、パラメータeを引数にしてメソッド内部でe.Graphicsをしています。
となると後は……描画領域として、e.ClipRectangle に出力していたりはしませんか?
ClipRectangle は再描画が必要な領域のみを示すため、コントロールの ClientRectangle とは 異なる領域を返す可能性があるため、予想とは異なるエリアに描画されてしまっていた、とか。
>>>form1.ShowDialog(this);の時、ArgumentExceptionがおきました。 >>この場合の this とは、何を表していますか? > form1がこのPaintイベントをしている画面、thisが呼び出し元の画面です。
という事は、form1 を呼び出すための画面(仮に、form2 とします)があって、 そこから form1 を呼び出しているのですね。
たとえば、form2 上のボタンクリック、あるいは Load イベント等から
private void button1_Click(object sender, EventArgs e) // private void Form2_Load(object sender, EventArgs e) { using (Form1 form1 = new Form1()) { form1.ShowDialog(this); } }
などとして呼び出し、呼び出された form1 側では、(Panel等の)Paint イベントで 何らかのメソッドを「引数e」を渡す形で呼び出し、e.Graphics に対して描画する、と。
private void panel1_Paint(object sender, PaintEventArgs e) { SampleMethod(e); }
private void SampleMethod(PaintEventArgs e) { //ControlPaint.DrawBorder3D(e.Graphics, e.ClipRectangle); ControlPaint.DrawBorder3D(e.Graphics, panel1.ClientRectangle, Border3DStyle.Bump); }
>>>>> 1.ボタンクリックだと線が描画されるのですが、Form_Load時にメソッドを呼び出すと描画されません。 >>>>> 2.また、ピクチャーボックスではなくpanelに描こうとするとボタンクリックでも描画出来ません。
今のところ、当方では上記コードで特に問題無く描画されています。
> 何も画面に部品が無いtestForm画面ではFormのPaintイベントで > メソッド呼び出しがうまく行ったのに、 > 今造っている画面を呼び出すとエラーになります。
そうすると、「今造っている画面」とやらに、何かしらの問題があるのかも知れませんね。 その画面には、どのようなコントロールが貼ってあり、どのようなコードが記述されていますか?
|
|