- PR -

フォーカスの移動

1
投稿者投稿内容
いも
常連さん
会議室デビュー日: 2003/03/16
投稿数: 37
投稿日時: 2006-01-01 13:55
Form2のボタンクリックでForm1のテキストボックスにフォーカスを移そうとしています。けれどもForm1に貼り付けたtextBox1にForm2からアクセスできません。
Form2も隠さないで実現したいのでHideメソッドも使えません。
コントロールもインスタンスを取得できるのでしょうか。もしできるなら、どのタイミングで取得できるのでしょうか。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-01 16:14
Form1 に公開されたメソッドを設けます。
その Form1 内のメソッド内でフォーカスをセットするようにすれば良いでしょう。

単純に書けばこんな感じです。

コード:

    public void SetTextBox1Focus() {
        this.Activate();
        this.textBox1.Focus();
    }


本来こういう場合はオーナーフォームを使って、
"フォーカスを移す" という概念を失くすべきだと思います。

# というか、いもさんの今まで立てたスレって "全部同じ問題" ですよ。
# アクセス修飾子、カプセル化などを理解されていれば躓かない問題です。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
いも
常連さん
会議室デビュー日: 2003/03/16
投稿数: 37
投稿日時: 2006-01-01 17:27
じゃんぬねっとさん、ありがとうございます。
よく考えてみると、Form1クラスの外部からコントロールを自由に操作できるのであれば、メッセージのやり取りにはなりませんね。私はまだオブジェクト指向の考え方が分かっていませんでした。でも、じゃんぬねっとさんの説明で少し分かってきたような気がします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-01 18:09
感付かれたようですね。(^^)

今まで、値を渡したり値を取得したりする際に、
クラス内部の情報に対して "直接" やりとりしていませんでしたよね?
そのクラスから自発的に何かをしてもらうスタンスで良いです。

基本的に Form は、公開部分が少なくなる傾向にあります。
GUI に関するものを外部からどうこうする、ということが少ないからです。

どういう経緯で、別の Form のフォーカスに関与しなければならなくなったのかは存じませんが、
一度、仕様の再検討も視野に入れてください。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)