- - PR -
【C#】フォーカスされているコントロールを判定する
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-02-02 16:47
はじめまして。
C#のコントロールについての質問です。 作るもの Form1 textBox1,textBox2,ButtonA Form2 textBox1,ButtonB Form1 の textBox1 もしくは textBox2 を選んで そのtextBoxに入力できる状態で、ButtonA を押して Form2 を呼び出し Form2 の textBox1に文字を入力したあとで ButtonB を押したときに、 Form1 の 選んだほうの textBox に Form2 の textBox1 と同じ文字を入れたいのです。 Form2にForm1の選ばれているtextBoxのポインタ?を投げられればできそうなのですが 選ばれているtextBoxの判定方法がわからないのです。 読みにくい文になってしまい、申し訳ないのですが どなたか、ご教授をお願いします。 | ||||
|
投稿日時: 2006-02-02 16:58
ButtonA を選択する時点で、フォーカスは ButtonA ですから単純にはできないことはおわかりですか?
Enter イベント Leave イベントなどで、どのコントロールにフォーカスがあったのかを記録しておきましょう。 または、Validating イベントでもできますが、意味合いがわからなくなるので前者をお勧めします。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-02-02 17:26
じゃんぬねっとさん、返答ありがとうございます。
やっぱりそうですよね・・・ 前者の方法で作ってみます。それができたら、後者の方も試してみます。 | ||||
|
投稿日時: 2006-02-02 17:39
面倒なら Form.UpdateDefaultButton メソッドをオーバーライドする方法もありますね。
(インフラ ストラクチャのサポート メソッドなのでアレですがw) このメソッドで、前回の ActiveControl を保持するようにします。 これなら仕様変更で TextBox の数が増えても大丈夫です。(^-^;) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-02-02 18:34
どうでしょう。 Form2を閉じるか表示したままかで違ってくると思います。 閉じるのであれば、Form2にカスタムプロパティなどを実装してForm1で受け取るとか。 閉じなくてもイベントで通知するとか。 | ||||
|
投稿日時: 2006-02-02 19:11
とりあえず、ShowDialog だろうと決め付けて、駄ソースです。
完全にニーモニックに対応していない危険なソースです。
Form2 には ResultText という読み取り専用プロパティを実装して、 Form1 から Form2 の TextBox の値を取得できるものとする。 または、ShowDialog メソッドの代わりに Form2 側で ShowDialog なメソッドを作って、戻り値を取得するかですね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-02-02 19:26
>>まどかさん
Form2は、毎回閉じるように設定する予定です。 >>じゃんぬねっとさん サンプルコードまで作っていただき本当にありがとうございます。 とりあえず、フォーカスを移動せずに作るのは、テキストボックスにクリックイベント を作ることで、一時的に解決しておきました。 ですが、他にもたくさんの方法(じぇんぬねっとさんの教えていただいた方法など) があるみたいなので、色々試してみたいと思います。 |
1