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

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

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

Re[1]: 別フォームからの、、、


(過去ログ 133 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■78828 / inTopicNo.1)  別フォームからの、、、
  
□投稿者/ C#初心者A (1回)-(2016/02/19(Fri) 17:49:59)

分類:[C#] 

メインフォームでpictureBoxに絵を描くプログラムを作っています。

メインフォーム内でボタンを押すと、別フォームが立ち上がり、

別フォーム上でメインフォームで描くペンの設定や、色の設定をリアルタイムで変更したいと思っていますが、

そんなことできますでしょうか?


別フォームでのボタン押すことで、メインフォームのpictureBoxを更新させる、、、ということが、、、
引用返信 編集キー/
■78829 / inTopicNo.2)  Re[1]: 別フォームからの、、、
□投稿者/ 魔界の仮面弁士 (650回)-(2016/02/19(Fri) 19:07:32)
No78828 (C#初心者A さん) に返信
> 別フォームでのボタン押すことで、メインフォームのpictureBoxを更新させる、、、ということが、、、

現在は、どのようなコードになっているのでしょうか。

もし、PictureBox の Paint イベント(もしくは、OnPaint のオーバーライド)で
e.Grapchis に対して描画しているのであれば、対象 PictureBox に対して
Invalidate メソッドを呼び出すことで、再描画を依頼することができます。

再描画を依頼するのではなく、強制的に更新させたいのであれば、
代わりに Refresh を実施してください。Invalidate と Refresh の違いは下記を参照。
http://dobon.net/vb/dotnet/control/refreshupdateinvalidate.html


なお、メインフォーム上にある PictureBox は、デザイン時に
 GenerateMember = true
 Modifiers = private
を割り当てているかと思います。
https://msdn.microsoft.com/ja-jp/library/ms233630.aspx

そのためこのままでは、別フォームのボタンから
 メインフォームのインスタンス.pictureBox1.Invalidate();
のような指示を出せません。


この対策はいろいろありますが、たとえばメインフォーム側に
 public void RepaintPictureBox()
 {
  this.pictureBox1.Invalida();
 }
などを用意し、別画面のボタンから上記を
 メインフォームのインスタンス.RepaintPictureBox();
のように呼び出すといった対応が考えられます。

実際のコードでは、メソッド引数部などで、
色やペンの情報などを引き渡すようにすれば良いでしょう。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -