
C# visual studio 2017で別クラスのメソッドからフォームのコントロールを操作するプログラムを作りたいと考えています。
①別クラスから操作したいコントロールをPublicにする
②フォーム部分で別クラスのメソッドを呼び出す
③呼び出されたクラスのメソッド内でフォームのインスタンスを生成し処理を実行する
これでは呼び出されたクラス内でフォームを新しく生成してしまっているので実際に変更したいフォームの値を操作していない。
ということまではわかりました。
少し調べたところ、以下のようなサンプルコードを見つけました。
C#
1[作成クラスのコード] 2 3public class MyClass 4{ 5//============ 6// Form1を示すメンバー変数 7public Form1 Form1Obj; 8 9//============ 10// コンストラクタ 11public MyClass( 12Form1 Form1_Obj) 13{ 14Form1Obj = Form1_Obj; 15} 16 17//============ 18// 初期化メソッド 19public void InitializeData() 20{ 21Form1Obj.textBox1.Text = "hoge"; 22Form1Obj.textBox2.Text = "hoge2"; 23} 24}
C#
1[Form1クラスのコード] 2 3public partial class Form1 : Form 4{ 5public Form1() 6{ 7InitializeComponent(); 8} 9 10private void Form1_Load(object sender, EventArgs e) 11{ 12MyClass MyClassObj = new MyClass(this); 13MyClassObj.InitializeData(); 14} 15}
作成クラスのコードについてはなぜこのように書くのかが全く分かりません。
Form1を示すメンバー変数とありますが、ここはForm1_Objという変数を宣言しています?
コンストラクタとうい部分は何が何だかさっぱりです。
Form1クラスのコードについてはクラスのインスタンスを生成するときに引数に自分自身を渡していますが、なぜそうなるかが分かりません。
これを参考にプログラムを書くと確かに実現したい動きにはなるのですが、なぜ動くのかが分からず質問させていただきました。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/10/19 07:28