C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 49 を表示中)
■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イベントで
> メソッド呼び出しがうまく行ったのに、
> 今造っている画面を呼び出すとエラーになります。

そうすると、「今造っている画面」とやらに、何かしらの問題があるのかも知れませんね。
その画面には、どのようなコントロールが貼ってあり、どのようなコードが記述されていますか?
返信 編集キー/


管理者用

- Child Tree -