プロが教えるわが家の防犯対策術!

Visual C# 2008を学習中なんですが、とりあえず何か作ってみようと思って、パラパラマンガに挑戦してみました。
Form1にpictureBox1を作り、waitを入れてイメージを書き換えるという単純なものです。
ところが実行しようと思ったら、「静的でないフィールド、メソッド、またはプロパティ’WindowsFormApplication1.Form1.pictureBox1’でオブジェクト参照が必要です」というエラーが出ます。その際のフォーカスは、main()内の
Form1.pictureBox1.image = Image.FromFile("motion1.png");
”Form1.pictureBox1”に当てられています。

何が原因と考えられるでしょうか。
もし情報不足であればご指摘いただくか、あるいはこの目的においてやらなければいけないこと、を大雑把に教えていただくだけでも幸いです。
よろしくお願いします。

A 回答 (2件)

main()内に記述されているとのことですので、たぶん、


Form1.pictureBox1.Image=Image.FromFile("motion1.png");
Application.Run(new Form1());
と書いているのではないでしょうか?

連載 改訂版 C#入門 第3章 クラスとインスタンス
http://www.atmarkit.co.jp/fdotnet/csharp_abc2/cs …

ここであるように、オブジェクト指向にはクラスとインスタンスという概念があります。
今のコードでは、Form1クラスを操作しようとしているのでそのようなエラーが出ます。

具体的な解決方法としては、PictureBoxに初期画像を設定する処理をForm1のコンストラクタでやるのがいいと思います。
その際、redfox63さんがおっしゃられるように
this.pictureBox1
と記述することが必要です。(thisは自分自身のインスタンスを指します)

後は、Windowsフォームで一定間隔での処理をするための「Timerコンポーネント」について調べてみたらいいと思います。

タイマにより一定時間間隔で処理を行うには?(Windowsタイマ編)
http://www.atmarkit.co.jp/fdotnet/dotnettips/372 …

MSDNライブラリ Timerクラス
http://msdn.microsoft.com/ja-jp/library/system.w …

参考URL:http://www.atmarkit.co.jp/fdotnet/csharp_abc2/in …
    • good
    • 2
この回答へのお礼

ご回答いただき、ありがとうございました。
ご紹介いただいたサイトも大変勉強になります。

お礼日時:2008/08/19 10:37

デバッグ実行でエラーになるコード特定しその周辺のコードを投稿しましょう



他のフォームから操作するのでなければ
Form1.pictureBox1と記述するより this.pictureBox1といった記述の方がいいように思います
    • good
    • 1
この回答へのお礼

ご回答いただき、ありがとうございました。
無事解決しました。

お礼日時:2008/08/19 10:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています