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