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

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

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

Re[2]: C# 別Formの Graphics を操作したい


(過去ログ 105 を表示中)

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

■62712 / inTopicNo.1)  C# 別Formの Graphics を操作したい
  
□投稿者/ キョン (1回)-(2011/10/29(Sat) 14:42:29)

分類:[C#] 

毎度質問ばかりで失礼します。

C#2010 Express で画像を取り扱うプログラムを書いております。
Form2 から Form1 の pictureBox1の操作をしようと思うのですが、Graphicsのオブジェクト参照がうまく行かず困っています。
複数のFormを取り扱うことはあまりしたことがない初心者なので、ご意見をいただければと思います。

Graphics g = form1.pictureBox1.CreateGraphics();

↑このような文でGraphicsを操作できないでしょうか?
それとも、原因はFormの参照に問題があるのでしょうか?

・pictureBox1のModifiersはPublicです。
・public Form1 form1 とForm1の参照は出来ている(?)と思います。

エラーでは下記のように出ます
「オブジェクト参照がオブジェクトインスタンスに設定されていません。」

だいぶ考えて見たのですがよく分かりません;
初歩的なミスかもしれませんがご意見いただければと思います。

よろしくお願いします。
引用返信 編集キー/
■62713 / inTopicNo.2)  Re[1]: C# 別Formの Graphics を操作したい
□投稿者/ NF64 (12回)-(2011/10/29(Sat) 16:56:54)
その例外はnullの参照型変数のメンバーにアクセスした際に発生します。

もし、
「Graphics g = form1.pictureBox1.CreateGraphics();」
を実行してそのような例外が発生するのであれば、form1またはpictureBox1がnullなのでしょう。

どのようなコードを書かれて、どの箇所で例外が発生するのか提示して頂ければ、具体的にご説明できるかと思います。

引用返信 編集キー/
■62716 / inTopicNo.3)  Re[2]: C# 別Formの Graphics を操作したい
□投稿者/ キョン (2回)-(2011/10/30(Sun) 00:22:26)
No62713 (NF64 さん) に返信
> その例外はnullの参照型変数のメンバーにアクセスした際に発生します。
>
> もし、
> 「Graphics g = form1.pictureBox1.CreateGraphics();」
> を実行してそのような例外が発生するのであれば、form1またはpictureBox1がnullなのでしょう。
>
> どのようなコードを書かれて、どの箇所で例外が発生するのか提示して頂ければ、具体的にご説明できるかと思います。
>

public Form1 form1;

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
try
{
//PictureBox1のGraphicsオブジェクトを取得
Graphics g = form1.pictureBox1.CreateGraphics(); //←まさにここでエラーが出ます
}catch(Exception ex)
{
MessageBox.Show("ERROR = " + ex.Message);
}
}

チェックボックスにチェックが入ったらイベントしたいと思っています。
短いですが上記で何かわかりますでしょうか?説明不足でスミマセン(ーー;)

現在、Form2に書いてるプログラムはこれだけなので、NF64さんの言うとおり
pictureBox1かForm1がNullになっているのだと思いますが…

今「ローカル」に表示されている g の値を見ると null になっていました。
これは何か関係あるのでしょうか?


引用返信 編集キー/
■62720 / inTopicNo.4)  Re[1]: C# 別Formの Graphics を操作したい
□投稿者/ Azulean (866回)-(2011/10/30(Sun) 01:40:40)
2011/10/30(Sun) 01:41:48 編集(投稿者)

No62712 (キョン さん) に返信
> ・public Form1 form1 とForm1の参照は出来ている(?)と思います。

変数を書くだけでは何も入っていない状態なので、それに対して操作したら例外が発生します。
従って、あなたが思っている「参照」はできていません。

個人的にはどこから描かれたかわからないような仕組みはやめるべきです。
Form1 に対して何らかのフィードバックをするのはよいと思いますが、CreateGraphics をよそのフォームから使うのは、再描画がかかったときにつじつまが合わなくなるなどの問題が出ると予想されます。

そこで、イベントを発生させることで Form1 に変化を促すか、(循環参照が気になりますが、)Form1 のプロパティ、メソッドで状態の変化を促すかというところになると思います。
引用返信 編集キー/
■62722 / inTopicNo.5)  Re[2]: C# 別Formの Graphics を操作したい
□投稿者/ キョン (4回)-(2011/10/30(Sun) 02:38:50)
ご意見ありがとうございました。

多少当初の予定とは異なりますが、絶対的にFormを分ける必要がないので、
なんとかForm1のなかでチェックボックスを操作できるように工夫してみようと思います。

ご回答下さいました皆様、ありがとうございました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -