複数のフォームの作成をコンソールアプリでシミュレートしてみる
WindowsFormsアプリの動作をコンソールアプリでコード作成することで学習を進めます
目次
Formクラスを継承したForm1クラスとForm2クラスを作成
それぞれは、Formクラスの特徴(属性)を持っていて、かつ独自の特徴(属性)も併せ持ちます
エントリーポイント(Mainメソッド)から、Form1のインスタンスを作成
まず、form1を作成します
form1(Form1クラスのインスタンス)からform2(Form2クラスのインスタンス)を作成
2つ目のフォームであるform2を作成します
form2のボタンをクリックすることでform1のラベルに文字を変更
ボタンクリックイベントでform1のラベルのプロパティを変更する
全体のコード
Form1 form1 = new Form1();
internal class Form1 : Form
{
public Label label1;
public Form1()
{
label1 = new Label();
Form2 form2 = new Form2(this);
form2.Show();
}
}
public class Label
{
public string Text { get; set; }
}
internal class Form2 : Form
{
Form1 form1;
public Form2(Form1 form1)
{
this.form1 = form1;
Form1LabelAccessButton_Click();
}
public void Form1LabelAccessButton_Click()
{
form1.label1.Text = "Hello";
Console.WriteLine(form1.label1.Text);
}
}
internal class Form
{
public void Show()
{
// フォームを表示する
}
}
このコードは、Windows フォームアプリケーションを作成するためのコードです。Form1 クラスは、メインフォームを表し、Form2 クラスは、Form1 クラスの label1 コントロールにアクセスするためのフォームです。
Form1 クラスでは、label1 コントロールを作成し、Form2 クラスのインスタンスを作成して表示します。Form2 クラスでは、Form1 クラスのインスタンスを受け取り、Form1 クラスの label1 コントロールにアクセスしてテキストを設定し、コンソールに出力します。
また、Label クラスは、label1 コントロールの代わりに使用されるカスタムのラベルクラスであり、Text プロパティを持ちます。
Form クラスは、フォームの基本クラスであり、フォームの表示を担当します。
コメント付きコード
Form1 form1 = new Form1(); // Form1 クラスのインスタンスを作成し、変数 form1 に代入する
internal class Form1 : Form // Form1 クラスを定義し、Form クラスを継承する
{
public Label label1; // label1 コントロールを保持する Label オブジェクトを宣言する
public Form1()
{
label1 = new Label(); // label1 コントロールのインスタンスを作成する
Form2 form2 = new Form2(this); // Form1 クラスのインスタンスを引数に取り、Form2 クラスのインスタンスを作成する
form2.Show(); // Form2 クラスのインスタンスを表示する
}
}
public class Label // Label クラスを定義する
{
public string Text { get; set; } // Text プロパティを宣言する
}
internal class Form2 : Form // Form2 クラスを定義し、Form クラスを継承する
{
Form1 form1; // Form1 クラスのインスタンスを保持する変数を宣言する
public Form2(Form1 form1)
{
this.form1 = form1; // 引数で渡された Form1 クラスのインスタンスを保持する
Form1LabelAccessButton_Click(); // Form1LabelAccessButton_Click メソッドを呼び出す
}
public void Form1LabelAccessButton_Click()
{
form1.label1.Text = "Hello"; // Form1 クラスの label1 コントロールのテキストを設定する
Console.WriteLine(form1.label1.Text); // コンソールに label1 コントロールのテキストを出力する
}
}
internal class Form // Form クラスを定義する
{
public void Show()
{
// フォームを表示する
}
}
ディスカッション
コメント一覧
まだ、コメントがありません