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

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

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

Re[1]: SelectNextControlより、.Focus()?


(過去ログ 118 を表示中)

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

■69162 / inTopicNo.1)  SelectNextControlより、.Focus()?
  
□投稿者/ ちゃんさん (3回)-(2013/12/06(Fri) 18:59:38)

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

下記の様に、コーディングしましたが、Tabキー/Enterキー/Tab + Shiftキー押下時に思うようにTab遷移してくれません。
SelectNextControlより、.Focus()を使った方が良いのでしょうか?

Public Sub txtBox_PreviewKeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles txtBox.PreviewKeyDown
If e.KeyCode = Keys.Tab OrElse e.KeyCode = Keys.Enter Then
If (e.Modifiers And Keys.Shift) = Keys.Shift Then
Me.SelectNextControl(txtBack, True, False, True, True)
Else
Me.SelectNextControl(txtNext, False, False, True, True)
End If
End If
End Sub

よろしくお願いします。

引用返信 編集キー/
■69165 / inTopicNo.2)  Re[1]: SelectNextControlより、.Focus()?
□投稿者/ 魔界の仮面弁士 (449回)-(2013/12/06(Fri) 20:08:16)
No69162 (ちゃんさん さん) に返信
> Me.SelectNextControl(txtNext, False, False, True, True)
txtBox のイベントなのに txtNext を渡していますが、あえてそうしているのでしょうか。

> 思うようにTab遷移してくれません。
独自の処理を加えたのであれば、e.Handled に True をセットしましょう。
http://www.atmarkit.co.jp/fdotnet/dotnettips/231winentermove/winentermove.html
引用返信 編集キー/
■69168 / inTopicNo.3)  Re[1]: SelectNextControlより、.Focus()?
□投稿者/ shu (446回)-(2013/12/07(Sat) 01:24:22)
No69162 (ちゃんさん さん) に返信
> 下記の様に、コーディングしましたが、Tabキー/Enterキー/Tab + Shiftキー押下時に思うようにTab遷移してくれません。
> SelectNextControlより、.Focus()を使った方が良いのでしょうか?
>
> Public Sub txtBox_PreviewKeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles txtBox.PreviewKeyDown
> If e.KeyCode = Keys.Tab OrElse e.KeyCode = Keys.Enter Then
> If (e.Modifiers And Keys.Shift) = Keys.Shift Then
> Me.SelectNextControl(txtBack, True, False, True, True)
> Else
> Me.SelectNextControl(txtNext, False, False, True, True)
> End If
> End If
> End Sub
>
> よろしくお願いします。
>
txtBox専用ならFocusを使った方が効率は良いと思います。移動がうまくいかないのは 魔界の仮面弁士さんが回答しているようにtxtBackとかtxtNextを渡しているからです。
txtBoxを渡すようにしましょう。

KeyPressイベントで
If e.KeyChar = vbCr Then
e.Handled = True
End If
のように処理しないとテキストボックスの既定のエンター動作が出来ず音がなってしまいます。

Shiftを押さないときに前のコントロールへ移動し押したときに次のコントロールへ移動するという動きは
想定した動きなのでしょうか?もし逆ならSelectNextControlの2番目の引数は逆です。




引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -