WinFormの2つのフォーム間で値を渡す方法は?
Winformの2つのフォーム間の値渡しは、以下の方法で実現できます。
- コンストラクタ引数渡し: ターゲットフォームのコンストラクタに引数を追加し、ターゲットフォームを作成する際に引数を渡すことで値を渡す方法。
public partial class Form2 : Form
{
private string data;
public Form2(string data)
{
InitializeComponent();
this.data = data;
}
}
値を渡すには、ターゲットウィンドウを呼び出すときにターゲットウィンドウのコンストラクターに値を渡します。
Form2 form2 = new Form2("传递的值");
form2.Show();
- 公開プロパティ渡し:ターゲットフォームに公開プロパティを設定し、そのプロパティの値に設定することで値を渡す方法
public partial class Form2 : Form
{
public string Data { get; set; }
}
ターゲットウィンドウの値を呼び出す場所で、ターゲットウィンドウのプロパティ値を設定する。
Form2 form2 = new Form2();
form2.Data = "传递的值";
form2.Show();
- 静的変数渡し:ターゲットのウィンドウで静的変数を定義し、直接代入によって値を渡す。
public partial class Form2 : Form
{
public static string data;
}
ターゲットフォームを使用する場所で、ターゲットフォームの静的変数に値を割り当てます。
Form2.data = "传递的值";
Form2 form2 = new Form2();
form2.Show();
- イベント引き渡し:送信側のフォームにイベントを設定し、取得側に値が必要になった時に当該イベントを実行させて引き渡す。
public partial class Form1 : Form
{
public event EventHandler<string> ValueChanged;
}
対象のフォームでイベントを購読し、イベントハンドラメソッドで渡された値を取得します。
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
Form1 form1 = new Form1();
form1.ValueChanged += Form1_ValueChanged;
}
private void Form1_ValueChanged(object sender, string e)
{
// 获取传递的值
}
}
ソースフォーム内のイベントを発火させ値を渡す
if (ValueChanged != null)
{
ValueChanged(this, "传递的值");
}
Winform フォーム間で値を渡す一般的な方法は上記のいくつか이며、具体的なシナリオに合わせて適切な方法を選択できます。