こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

イベントパンドラで作成したインスタンスを、別のイベントパンドラで使う

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;//このようにしたいが、実際はエラーがでる
}
}
}

はじめての質問&クラスがなんたるかをしっかり理解していないので
わかりにくい質問になったかもしれませんが、よければご回答ください。よろしくお願いします。

投稿日時 - 2008-05-02 16:52:26

QNo.3992510

困ってます

質問者が選んだベストアンサー

/*
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();
}
}
}

投稿日時 - 2008-05-02 17:59:47

お礼

なるほど!クラスのメンバ変数にするのですね。
盲点でした。
詳しい説明ありがとうございます。

投稿日時 - 2008-05-02 21:43:14

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

メンバ変数にするだけかと。

投稿日時 - 2008-05-02 17:58:23

お礼

そうですね。まだまだ自分のクラスの使い方の理解が、未熟でした。
精進します。

投稿日時 - 2008-05-02 21:45:48

あなたにオススメの質問