別クラスからメインフォームのコントロールを操作する
クラスは、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();
}
}
