はじめにことわっておきます。解決のためのコードやロジックはありません。サンプルが欲しい人はこっち。
いろんな掲示板で、様々な状況の、「複数のフォーム間で、データをやりとりする方法」について、質問が上がっています。
ごめん。なぜわからないのか、わからない。。。
例えば、こんな質問。
class Form1 : Form {
// 略
private void button1_Clicked(...) {
Form2 frm2 = new From2();
frm2.Show();
this.Hide();
}
// 略
}
class Form2 : Form {
// 略
private void button1_Clicked(...) {
this.Close();
// ここで Form1 を表示したい!!
// ここで Form1 に textBox1 の内容を渡したい!!
}
// 略
}
じゃんぬさんのエントリ、「VB6.0 で Form の「既定のインスタンス」(暗黙のインスタンス化) を防ぐには?」を読んでいると、VB6.0 ユーザだと、こうしたいのかな?
class Form1 : Form {
// 略
private void button1_Clicked(...) {
Form2.Show();
this.Hide();
}
// 略
}
class Form2 : Form {
// 略
private void button1_Clicked(...) {
this.Close();
// ここで Form1 を表示したい!!
Form1.Show();
// ここで Form1 に textBox1 の内容を渡したい!!
Form1.textBox1.Text = this.textBox1.Text;
}
// 略
}
で、規定のインスタンスがないので、Form1. と入力したところで、インテリセンスが反応しない。無理矢理入れてもコンパイル エラーになる。。。ってこと?
これだったら、なるほど。「クラスやインスタンスの概念を理解しましょう」ってことになりますね。
じゃぁ、アレですね。VB2005 では、規定のインスタンスが復活したので、こういう書き方が出来ちゃうわけですね(ここに書いているのは C# だろ、というツッコミは勘弁)。
じゃぁ、なんですかね?「MDI のように複数表示したいのだけど、出来ない」って質問が出てくるのか、今度は?
投稿日時 : 2006年11月21日 23:39