DOBON.NET DOBON.NETプログラミング掲示板過去ログ

異なるフォームへオブジェクトを生成

分類:[.NET]

はじめまして.
Visual C♯を勉強しているCINEMAパラダイスと申します.
私は,Visual C♯を勉強しはじめたばかりでどうしても分からないのです.

皆さまのお力をお借りして問題解決にあたりたいと思いますので,
どうかご協力お願いします.

私が現在,直面している問題は別フォームへデータを渡すことにあります.

具体的には,フォーム1でクラスを宣言し,
フォーム2でコンストラクタの値をオブジェクトのメンバとして,
受け取る方法です.

コードのイメージは,以下のような感じです.

//Form1
public class school
{
public int teacher; //先生の人数
public int student;  //生徒の人数

public school()
{
teacher = 50;
student = 500;
}
}

//Form2
//Form1をオブジェクト化
public Form1 frm1;  

private void label1_Click(object sender, System.EventArgs e)
{
double spt; //先生一人が受け持つ生徒の数(生徒/先生)

//オブジェクトの生成   
school sch = new school(); ←↓記述方法が良くわかりません.
  frm1.school sch = new frm1.school();

spt = (double)(sch.student/sch.teacher);

(以下,略)
   ・
   ・
}

以上がコードの例なのですが,
フォーム2でフォーム1のオブジェクトを参照する変数を
作成できずに困惑しています.

どうか教えて頂きたいと思います.よろしくお願いします.
> //Form1
> public class school
> {
> public int teacher; //先生の人数
> public int student;  //生徒の人数
>
> public school()
> {
> teacher = 50;
> student = 500;
> }
> }

これがForm1クラスの中(public class Form1{〜}の〜の部分に書かれているなら)、
このschoolクラスはForm1クラスのインナークラスといいます。
Form1クラスの中に書かれているのではなく外側に書かれているなら、
Form1.csに書かれているコードでも個別のクラスになります。

Form1クラスschoolクラスに深い関わりがあるなら別ですが、
今回のようにForm1以外のクラスからも積極的に利用するなら、
school.csファイルを新規に作成して、そこに
public class school{ :省略
として宣言します。
# クラス名の先頭は大文字にしましょう。 school→School

> //オブジェクトの生成   
> school sch = new school(); ←↓記述方法が良くわかりません.

インナークラスでない場合はこちらの書き方でOKです。

>   frm1.school sch = new frm1.school();

インナークラスの場合は
Form1.school sch = new Form1.school();
となると思います。(外側のクラス名.インナークラス名)
よねKENさんへ

インナークラスという用語を大変分かりやすく説明して頂き,
また,クラス名の書き方など細かな点まで教えて頂き,
本当にありがとうございます.
とてもわかりやすい説明で,プログラムをすぐに修正することができました.


おかげさまでプログラミングが円滑に進みそうです(今のところですが・・^^;).
今後もこちらで質問することがあるかもしれませんので,
(他の方の質問に対する回答もできるように頑張ります)
その際には,よろしくお願いします.
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板