- 題名: テキストボックスへの反映
- 日時: 2006/01/13 14:46:16
- ID: 14503
- この記事の返信元:
- (なし)
- この記事への返信:
- [14504] Re[1]: テキストボックスへの反映2006/01/13 14:55:06
- [14507] Re[1]: テキストボックスへの反映2006/01/13 15:10:10
- ツリーを表示
■No14503に返信(covaさんの記事)
> hForm2.ShowDialog();
> というのと経て、Form2のtextbox1にform1のtextbox1を表示させるにはどうすればいいですか?
本来は、ケースバイケースなのですが、
ShowDialog メソッドであるならば、以下のようなコードになるでしょう。
pubic class Form1 : System.Windows.Forms.Form {
/* 省略 */
private void MakiMakiLove() {
using (Form2 hForm2 = new Form2()) {
// [OK] ボタンを選択した場合のみであるならば
//if (hForm2.ShowDialog() == DialogResult.OK) {
this.textBox1.Text = hForm2.TextBox1Text;
//}
}
}
}
Form2 には TextBox1Text という公開されたプロパティを設けます。
当然 readonly プロパティにします。
不必要なアクセスを失くすことは非常に重要です。
pubic class Form2 : System.Windows.Forms.Form {
/* 省略 */
public string TextBox1Text {
get {
return this.textBox1.Text;
}
}
}
これが OOP の基本ですね。
また、Form2 の項目が増えた場合は、プロパティをデータ クラスか構造体などに変更することで、
Form1 で一括で取得できるようになります。
間違っても、Form1 から Form2 を呼び出しているのにも関わらず、
Form2 自身が Form1 に何かを通知するような実装はあってはなりません。
(これは、OOP 以前に構造化言語からの基本ですね)
__________________________________________________
じゃんぬ Microsoft MVP for Visual Developer - C#
http://jeanne.wankuma.com/
http://blogs.wankuma.com/jeanne/
■No14510に返信(まどかさんの記事)
> #こっそりと。。。(^^;
> 元の要求と反対に解釈されいますよぉ。。。
あう... 読み違えた。。。
ということで、お詫びに。
pubic class Form1 : System.Windows.Forms.Form {
/* 省略 */
private void MakiMakiLove() {
using (Form2 hForm2 = new Form2()) {
hForm2.SetTextBox1(this.textBox1.Text);
hForm2.ShowDialog();
}
}
}
pubic class Form2 : System.Windows.Forms.Form {
/* 省略 */
public void SetTextBox1(string value) {
this.textBox1.Text = value;
}
}
__________________________________________________
じゃんぬ Microsoft MVP for Visual Developer - C#
http://jeanne.wankuma.com/
http://blogs.wankuma.com/jeanne/
分類:[.NET]
form1のtextbox1へ文字入力をしたあと、form1のbutton1で
Form2 hForm2 = new Form2();
hForm2.ShoeDialog();
というのと経て、Form2のtextbox1にform1のtextbox1を表示させるにはどうすればいいですか?
Form2の追加は「新しい項目の追加」というので行っています。