別クラスからメインフォームのコントロールを操作する

クラスは、partial を指定すると、複数のソースファイルに分けて、整理することが可能です。

public partial class MyClass
{

}

しかし、Form1クラスの場合、ソリューションエクスプローラーで、分けたForm1クラス用ファイルをダブルクリックすると、デザイン画面が新規で作られてしまいます。
デザイン画面が作られても害はないので、気にしなければよいのですが、それが嫌な場合は、別クラスを設けます。
以下のようにすれば、メインフォームに属しているコントロールを、他のクラスで利用可能です。

[Form1.Designer.csファイルのコード]

まず、Form1.Designer.csファイルでの該当コントロールの private 指定を public 指定に変更して、他のクラスからアクセス可能にします。

< 変更前>

private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.TextBox textBox2;

< 変更後>

public System.Windows.Forms.TextBox textBox1;
public System.Windows.Forms.TextBox textBox2;

[作成クラスのコード]

public class MyClass
{
//============
// Form1を示すメンバー変数
public Form1 Form1Obj;

//============
// コンストラクタ
public MyClass(
Form1 Form1_Obj)
{
Form1Obj = Form1_Obj;
}

//============
// 初期化メソッド
public void InitializeData()
{
Form1Obj.textBox1.Text = "hoge";
Form1Obj.textBox2.Text = "hoge2";
}
}

[Form1クラスのコード]

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
MyClass MyClassObj = new MyClass(this);
MyClassObj.InitializeData();
}
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です