C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: UserControl とフォーカス


(過去ログ 34 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■16700 / inTopicNo.1)  UserControl とフォーカス
  
□投稿者/ H (1回)-(2008/04/09(Wed) 19:24:47)

分類:[.NET 全般] 

VB.NET 2003

TextBox1, TextBox2を貼り付けたUserControl1を用意します。
Formに上記のUserControl1とButton1を貼り付けます。

TextBox2にフォーカスがある状態で、Button1をクリックすると、
フォーカスがButton1に移ります。
ここで、UserControl1(テキストボックス以外の部分)をクリックすると、
TextBox1にフォーカスが当たってしまいます。

UserControl1をクリックしたときに、選択されていたテキストボックスに
フォーカスを戻したいのですが、どのようにすればよいでしょうか。

よろしくお願いします。
引用返信 編集キー/
■16718 / inTopicNo.2)  Re[1]: UserControl とフォーカス
□投稿者/ ネタ好き (63回)-(2008/04/09(Wed) 23:52:02)
2008/04/09(Wed) 23:53:07 編集(投稿者)


No16700 (H さん) に返信
> VB.NET 2003
>
> TextBox1, TextBox2を貼り付けたUserControl1を用意します。
> Formに上記のUserControl1とButton1を貼り付けます。
>
> TextBox2にフォーカスがある状態で、Button1をクリックすると、
> フォーカスがButton1に移ります。
> ここで、UserControl1(テキストボックス以外の部分)をクリックすると、
> TextBox1にフォーカスが当たってしまいます。
>
> UserControl1をクリックしたときに、選択されていたテキストボックスに
> フォーカスを戻したいのですが、どのようにすればよいでしょうか。
>
> よろしくお願いします。

えっと、この質問はTextBox2を編集している時に、他のコントロールにフォーカスを移してから、
UserControlにフォーカスを戻した時に、TextBox1にフォーカスが移ると言う事ですよね?
UserControlのLostFocusイベントで選択されているTextBoxを変数に保存して、
GotFocusイベントで変数を読み込んでフォーカスを移したらいいと思います。
引用返信 編集キー/
■16771 / inTopicNo.3)  Re[2]: UserControl とフォーカス
□投稿者/ H (2回)-(2008/04/10(Thu) 13:08:50)
No16718 (ネタ好き さん) に返信

> えっと、この質問はTextBox2を編集している時に、他のコントロールにフォーカスを移してから、
> UserControlにフォーカスを戻した時に、TextBox1にフォーカスが移ると言う事ですよね?
> UserControlのLostFocusイベントで選択されているTextBoxを変数に保存して、
> GotFocusイベントで変数を読み込んでフォーカスを移したらいいと思います。

単純にUserControl1内のイベントでメッセージを表示してみると、
UserControl1をクリックした時点でLostFocusのイベントが発生しました。
(GotFocusイベントは発生しませんでした)
変数に保存するタイミングと、変数から読み込むタイミングがいまいち分からないです。

Public Class UserControl1
    Inherits System.Windows.Forms.UserControl

    '" Windows フォーム デザイナで生成されたコード "←2つのTextBoxを貼り付けただけ

    Private Sub UserControl1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.GotFocus
        MessageBox.Show("GotFocus")
    End Sub

    Private Sub UserControl1_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.LostFocus
        MessageBox.Show("LostFocus")
    End Sub
End Class


引用返信 編集キー/
■16772 / inTopicNo.4)  Re[3]: UserControl とフォーカス
□投稿者/ ネタ好き (71回)-(2008/04/10(Thu) 13:11:15)
2008/04/10(Thu) 13:11:52 編集(投稿者)

No16771 (H さん) に返信
UserControl自体のイベントを観察しましょう。
ひとまずコンソールアプリでコンパイルし、イベント内でConsole.Writeでメッセージを出力するようにプログラムして、
色々操作してみると理解できるようになります。
引用返信 編集キー/
■16774 / inTopicNo.5)  Re[4]: UserControl とフォーカス
□投稿者/ H (3回)-(2008/04/10(Thu) 14:26:59)
No16772 (ネタ好き さん) に返信
> UserControl自体のイベントを観察しましょう。
> ひとまずコンソールアプリでコンパイルし、イベント内でConsole.Writeでメッセージを出力するようにプログラムして、
> 色々操作してみると理解できるようになります。

すみません。理解できなかったです・・・。
コンソールアプリでコンパイルして、メッセージを出力してみましたが、
出力されるのは、LostFocusのイベント時のみで、
GotFocusは、どのタイミングで発生するのか分かりませんでした。
(LostFocusイベントは、ボタンにフォーカスがある状態でUserControl1をクリックしたときに発生しました)
引用返信 編集キー/
■16775 / inTopicNo.6)  Re[5]: UserControl とフォーカス
□投稿者/ ネタ好き (72回)-(2008/04/10(Thu) 14:41:36)
2008/04/10(Thu) 14:47:23 編集(投稿者)

No16774 (H さん) に返信
> ■No16772 (ネタ好き さん) に返信
>>UserControl自体のイベントを観察しましょう。
>>ひとまずコンソールアプリでコンパイルし、イベント内でConsole.Writeでメッセージを出力するようにプログラムして、
>>色々操作してみると理解できるようになります。
>
> すみません。理解できなかったです・・・。
> コンソールアプリでコンパイルして、メッセージを出力してみましたが、
> 出力されるのは、LostFocusのイベント時のみで、
> GotFocusは、どのタイミングで発生するのか分かりませんでした。
> (LostFocusイベントは、ボタンにフォーカスがある状態でUserControl1をクリックしたときに発生しました)

そうでか。
ならば、テキストも含めてフォーカス関係全てのイベントを試してみてください。
イベントは次の通りです。
Enter 、GotFocus、LostFocus、Leave
※マウス使用時のフォーカス遷移とキーボードのフォーカス遷移は違うので注意してね。

引用返信 編集キー/
■16777 / inTopicNo.7)  Re[6]: UserControl とフォーカス
□投稿者/ H (4回)-(2008/04/10(Thu) 15:11:01)
No16775 (ネタ好き さん) に返信
> そうでか。
> ならば、テキストも含めてフォーカス関係全てのイベントを試してみてください。
> イベントは次の通りです。
> Enter 、GotFocus、LostFocus、Leave
> ※マウス使用時のフォーカス遷移とキーボードのフォーカス遷移は違うので注意してね。

ありがとうございます。
GotFocus, LostFocusではなく、Enter, Leaveを使って判断すればいいようです。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -