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

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

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

Re[6]: 途中のButtonにフォーカスを移したい


(過去ログ 116 を表示中)

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

■68442 / inTopicNo.1)  途中のButtonにフォーカスを移したい
  
□投稿者/ 青花 (20回)-(2013/10/21(Mon) 14:51:00)

分類:[VB.NET/VB2005 以降] 

Tabキーを押下すると次のTextBoxにフォーカスが移動し、Shift + Tab でひとつ前のTextBoxにフォーカスが移動するしようとしていて下記の様に実装しました。
※ 次のTextBox、又はひとつ前のTextBoxが非活性の場合はさらに次、さらにひとつ前にフォーカス移動する

    Private Sub TextBox1_PreviewKeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles TextBox1.PreviewKeyDown
        If e.KeyCode = Keys.Tab OrElse e.KeyCode = Keys.Enter Then
            If (e.Modifiers And Keys.Shift) = Keys.Shift Then
                If BackTextBox.Enabled Then
                    Me.SelectNextControl(BackTextBox, True, True, True, True)
                Else
                    Me.SelectNextControl(BackTextBox2, True, True, True, True)
                End If
            Else
                If NextTextBox.Enabled Then
                    Me.SelectNextControl(NextTextBox, False, True, True, True)
                   Else
                    Me.SelectNextControl(NextTextBox2, False, True, True, True)
                End If
            End If
        End If
    End Sub


ただ、途中にボタンがあり、ボタンの場合は、Button1.Focus() で実装しましたが、
実行すると、ボタンにフォーカスがあたりません。
SelectNextControlでコントロールしようと思い、
Me.SelectNextControl(Button1, True, True, True, True) と実装しましたが、全く別のTextBoxにフォーカスがあたります。
同じく、Me.SelectNextControl(Button1, False, True, True, True) としても結果は同じです

【OS】   Win 7 SP1
【開発環境】Visual Studio 2008Professional 
【言語】  VB.net 

よろしくお願い致します。

引用返信 編集キー/
■68444 / inTopicNo.2)  Re[1]: 途中のButtonにフォーカスを移したい
□投稿者/ shu (401回)-(2013/10/21(Mon) 16:11:12)
No68442 (青花 さん) に返信

TextBox1のイベントとして実装するなら
SelectNextControl(TextBox1, True, True, True, True)
なり
SelectNextControl(TextBox1, False, True, True, True)
で良いのでは?他のControlにも同様の動作をさせるにしても
SelectNextControl(Diectcast(sender, Control), True, True, True, True)
などでよいと思います。


BackTextBoxなどは何なのでしょう?


> ただ、途中にボタンがあり、ボタンの場合は、Button1.Focus() で実装しましたが、
> 実行すると、ボタンにフォーカスがあたりません。
記述されたButton1.Focusの部分は確かに実行されているのでしょうか?


> Me.SelectNextControl(Button1, True, True, True, True) と実装しましたが、全く別のTextBoxにフォーカスがあたります。
> 同じく、Me.SelectNextControl(Button1, False, True, True, True) としても結果は同じです
これだとButton1の次か前のコントロールへの移動なのでButton1へはフォーカス移動しません。



引用返信 編集キー/
■68445 / inTopicNo.3)  Re[2]: 途中のButtonにフォーカスを移したい
□投稿者/ 青花 (21回)-(2013/10/21(Mon) 16:54:13)
No68444 (shu さん) に返信
> ■No68442 (青花 さん) に返信
> BackTextBoxなどは何なのでしょう?

すみません、TextBoxの名前です

>>ただ、途中にボタンがあり、ボタンの場合は、Button1.Focus() で実装しましたが、
>>実行すると、ボタンにフォーカスがあたりません。
> 記述されたButton1.Focusの部分は確かに実行されているのでしょうか?

実装しています。

>>Me.SelectNextControl(Button1, True, True, True, True) と実装しましたが、全く別のTextBoxにフォーカスがあたります。
>>同じく、Me.SelectNextControl(Button1, False, True, True, True) としても結果は同じです
> これだとButton1の次か前のコントロールへの移動なのでButton1へはフォーカス移動しません。

説明不足ですみません

Private Sub TextBox2_PreviewKeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles TextBox2.PreviewKeyDown
If e.KeyCode = Keys.Tab OrElse e.KeyCode = Keys.Enter Then
If (e.Modifiers And Keys.Shift) = Keys.Shift Then
Me.SelectNextControl(Button1, True, True, True, True)
Else
Me.SelectNextControl(TextBox1, False, True, True, True)
End If
End If
End Sub


上記の様に実装しています。



PreviewKeyDownの直下、KeyDownの直下にブレークポイント設定しても、デバックできません。
TabやEnterやShiftでは、限界があるのでしょうか?
それとも、実装の仕方がまずいのでしょうか?


よろしくお願いします




引用返信 編集キー/
■68448 / inTopicNo.4)  Re[3]: 途中のButtonにフォーカスを移したい
□投稿者/ 青花 (22回)-(2013/10/21(Mon) 21:21:35)
説明不足で申し訳ございません。

Fromではなく、ユーザーコントロールで作成しています。
共通の部品として使用しているから、上手く動作しないのでしょうか?

よろしくお願いします
引用返信 編集キー/
■68455 / inTopicNo.5)  Re[4]: 途中のButtonにフォーカスを移したい
□投稿者/ shu (402回)-(2013/10/22(Tue) 07:55:35)
No68448 (青花 さん) に返信

単純にEnter移動の実装ならこんな感じでよいです。

    Protected Overrides Function ProcessDialogKey(keyData As System.Windows.Forms.Keys) As Boolean
        If keyData = Keys.Enter AndAlso (Control.ModifierKeys And (Keys.Control Or Keys.Alt)) = 0 Then
            If (Control.ModifierKeys And Keys.Shift) > 0 Then
                Me.SelectNextControl(Me.ActiveControl, False, True, True, True)
            Else
                Me.SelectNextControl(Me.ActiveControl, True, True, True, True)
            End If
            Return True
        Else
            Return MyBase.ProcessDialogKey(keyData)
        End If
    End Function

引用返信 編集キー/
■68461 / inTopicNo.6)  Re[5]: 途中のButtonにフォーカスを移したい
□投稿者/ 青花 (23回)-(2013/10/22(Tue) 10:28:55)
No68455 (shu さん) に返信
> ■No68448 (青花 さん) に返信
>
> 単純にEnter移動の実装ならこんな感じでよいです。

申し訳ございませんが、実装して試してみましたが、ボタンに遷移しません。
Tabの遷移の順番もバラバラです。

Me.Button1.Focus()
Me.Button1.Select() も試してみましたが、駄目でした。
プロパティーの設定も、TabStopはTrueになっています。

よろしくお願いします
引用返信 編集キー/
■68507 / inTopicNo.7)  Re[6]: 途中のButtonにフォーカスを移したい
□投稿者/ 青花 (24回)-(2013/10/24(Thu) 17:50:48)
shu さん ありがとうございました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -