|
■No30556 (渡辺 さん) に返信
> こんにちは。例えばA,BというFormがあり、BからAのある変数の値を取得する方法はありますか?
こんにちは、渡辺さん。
すでに皆様から有益な回答が記載されておりますが…
Formといえどもクラスであることに変わりはありません。
ですので、FormAの変数をFormBから参照したい場合は、
FormAの変数をpublicにしてあげればFormBから参照することが可能です。
例えば、
・FormB:FormAを呼び出す画面(FormAを表示するためのボタンを有する)
・FormA:FormBから呼び出される画面(テキストボックスを有する)
という前提で、以下の動作を実現させたい場合、
・FormBのボタンを押下してFormAが表示された後に、
FormAのテキストボックスに入力されていた値(を格納した変数)を
FormBから参照して表示する
以下のようなソースコードで実現することが可能です。
/// <summary>FormAを呼び出す画面</summary>
public partial class FormB : Form
{
/// <summary>
/// FormAを表示してFormAのテキストボックスに入力された値を
/// FormBから取得して表示する
/// </summary>
private void button1_Click(object sender, EventArgs e)
{
//@FormAをモーダルダイアログとして表示
FormA formA = new FormA();
formA.ShowDialog(this);
//BFormAの変数の値を取得して表示
string formAValue = formA.TextBoxValue;
MessageBox.Show(this, formAValue);
}
}
/// <summary>FormBから呼び出される画面</summary>
public partial class FormA : Form
{
/// <summary>FormBに公開する変数</summary>
public string TextBoxValue = null;
/// <summary>FormAが閉じる際に実行されるイベント</summary>
private void FormA_FormClosed(object sender, FormClosedEventArgs e)
{
//A画面が閉じる際にテキストボックスの値を変数に格納
TextBoxValue = textBox1.Text;
}
}
上記のように、FormAの変数"TextBoxValue"をpublicにすることにより、
FormBから上記変数を参照することが可能です(ホントはプロパティで
公開したほうがいいのでしょうが、簡略化のためあえてメンバを直接
公開しています)。見当違いな解説でしたらすみません…m(;_ _)m
ちなみに、渡辺さんのおっしゃっているForm"A"と"B"が
それぞれ別ExeのFormである場合は、上記のように簡単な方法で
実現することはできませんが…( ̄ー ̄;
|