- ベストアンサー
イベントパンドラで作成したインスタンスを、別のイベントパンドラで使う
Visual studio 2005 のC#で勉強をしているのですが、インスタンスをグローバル変数のように宣言する仕方がわからなくてこまっています。 ソースコードで説明すると、 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace tesuto { public partial class Form1 : Form { public class car { public string a; } public Form1() { InitializeComponent(); car bike = new car();//このインスタンスをpicturebox //_Clickのイベントパンドラの中 //で使いたい bike.a = "asd"; } private void pictureBox_Click(object sender, EventArgse) { string b; b = bike.a;//このようにしたいが、実際はエラーがでる } } } はじめての質問&クラスがなんたるかをしっかり理解していないので わかりにくい質問になったかもしれませんが、よければご回答ください。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
/* Visual StudioのようなIDEで自動的に作ってもらうと デフォルトインスタンスとかいう仕組みで,どうしても世界が見えないかもしれないけど 作らずに書くとこんな感じ。こっちの方が長いけど,却って自分には解りやすい。 */ namespace test { public partial class Form1 : System.Windows.Forms.Form { private car bike; //変数宣言を外に出す。ローカル変数じゃなく,クラスのメンバ変数。 private System.Windows.Forms.PictureBox picturebox1; //car.B等のように共通して用いる変数の場合 //staticを使うことになる。今回の事例とは違うのかな、って気がするので //解説する気すらないが。 public class car { public string a; //本当は以下のような形式が望ましい。 private string b; public string B{ set{ b = value; } get{ return b; } } } public Form1() { InitializeComponent(); bike = new car(); bike.a = "asd"; } public void InitializeComponent(){ this.Size = new System.Drawing.Size(800,600); picturebox1 = new System.Windows.Forms.PictureBox(); picturebox1.Size = new System.Drawing.Size(700,500); picturebox1.Left = 50; picturebox1.Top = 50; picturebox1.BackColor = System.Drawing.Color.Pink; picturebox1.Click += pictureBox_Click; this.Controls.Add(picturebox1); } private void pictureBox_Click(object sender, System.EventArgs e) { string b; b = bike.a;//このようにしたいが、実際はエラーがでる this.Text = b; } private static void Main(){ Form1 form1 = new Form1(); form1.ShowDialog(); } } }
その他の回答 (1)
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
メンバ変数にするだけかと。
お礼
そうですね。まだまだ自分のクラスの使い方の理解が、未熟でした。 精進します。
お礼
なるほど!クラスのメンバ変数にするのですね。 盲点でした。 詳しい説明ありがとうございます。