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

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

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

Re[5]: comboboxのフォーカスが移動


(過去ログ 119 を表示中)

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

■69820 / inTopicNo.1)  comboboxのフォーカスが移動
  
□投稿者/ ちゃんさん (5回)-(2014/01/31(Fri) 11:57:52)

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

combobox1.Focus() とコーディングしてもフォーカスが移動しません。
又、combobox1.Select() とコーディングしてもフォーカスが移動しません。
又、Me.SelectNextControl(combobox1, True, True, True, True) とコーディングしてもフォーカスが移動しません。

初期表示時のカーソル位置設定にコンボボックスを設定しよと
Me.ActiveControl = Me.combobox1 とコーディングしてもフォーカスが当たりません。

なぜでしょうか

何卒よろしくお願い致します。
引用返信 編集キー/
■69822 / inTopicNo.2)  Re[1]: comboboxのフォーカスが移動
□投稿者/ shu (478回)-(2014/01/31(Fri) 12:31:03)
No69820 (ちゃんさん さん) に返信
> 又、Me.SelectNextControl(combobox1, True, True, True, True) とコーディングしてもフォーカスが移動しません。
これはcombobox1の次のコントロールへの移動なのでcombobox1へは移動しません。

combobox1はフォーカス可能な状態か?
提示されたコードは実行されているのか?

引用返信 編集キー/
■69823 / inTopicNo.3)  Re[2]: comboboxのフォーカスが移動
□投稿者/ ちゃんさん (6回)-(2014/01/31(Fri) 13:02:18)
No69822 (shu さん) に返信
> combobox1はフォーカス可能な状態か?

フォーカスを可能な状態にする方法とかあるのでしょうか?

> 提示されたコードは実行されているのか?

実行しています


よろしくお願い致します。
引用返信 編集キー/
■69824 / inTopicNo.4)  Re[3]: comboboxのフォーカスが移動
□投稿者/ shu (479回)-(2014/01/31(Fri) 13:34:55)
No69823 (ちゃんさん さん) に返信
> ■No69822 (shu さん) に返信
>>combobox1はフォーカス可能な状態か?
>
> フォーカスを可能な状態にする方法とかあるのでしょうか?
たとえばマウスでクリックしてフォーカス移動すればフォーカス可能な状態です。
それでもフォーカス移動しなければ
Enabled=Falseになっているとか?


>>提示されたコードは実行されているのか?
>
> 実行しています
その確認はどのように行いましたでしょうか?
また実際どのイベントにどのように記載されていますでしょうか?
引用返信 編集キー/
■69830 / inTopicNo.5)  Re[4]: comboboxのフォーカスが移動
□投稿者/ ちゃんさん (7回)-(2014/01/31(Fri) 15:40:53)
No69824 (shu さん) に返信
> ■No69823 (ちゃんさん さん) に返信
>>■No69822 (shu さん) に返信
> >>combobox1はフォーカス可能な状態か?
>>
>>フォーカスを可能な状態にする方法とかあるのでしょうか?
> たとえばマウスでクリックしてフォーカス移動すればフォーカス可能な状態です。
> それでもフォーカス移動しなければ
> Enabled=Falseになっているとか?

フォーカス可能な状態です。


> >>提示されたコードは実行されているのか?
>>
>>実行しています
> その確認はどのように行いましたでしょうか?

デバックで確認しました。

> また実際どのイベントにどのように記載されていますでしょうか?

Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
Dim KeyCode As Short = e.KeyCode
Dim Shift As Short = e.KeyData \ &H10000
If KeyCode = System.Windows.Forms.Keys.Tab Or KeyCode = System.Windows.Forms.Keys.Return Then
If (Shift And VB6.ShiftConstants.ShiftMask) > 0 Then
combobox1.Focus()
Else
TextBox2.Focus()
End If
End If
End Sub


よろしくお願いします




引用返信 編集キー/
■69832 / inTopicNo.6)  Re[5]: comboboxのフォーカスが移動
□投稿者/ Deep (1回)-(2014/01/31(Fri) 16:41:31)
No69830 (ちゃんさん さん) に返信
> ■No69824 (shu さん) に返信
>>■No69823 (ちゃんさん さん) に返信
> >>■No69822 (shu さん) に返信
>>>>combobox1はフォーカス可能な状態か?
> >>
> >>フォーカスを可能な状態にする方法とかあるのでしょうか?
>>たとえばマウスでクリックしてフォーカス移動すればフォーカス可能な状態です。
>>それでもフォーカス移動しなければ
>>Enabled=Falseになっているとか?
> 
> フォーカス可能な状態です。
> 
> 
>>>>提示されたコードは実行されているのか?
> >>
> >>実行しています
>>その確認はどのように行いましたでしょうか?
> 
> デバックで確認しました。
> 
>>また実際どのイベントにどのように記載されていますでしょうか?
> 
>     Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
>         Dim KeyCode As Short = e.KeyCode
>         Dim Shift As Short = e.KeyData \ &H10000
>         If KeyCode = System.Windows.Forms.Keys.Tab Or KeyCode = System.Windows.Forms.Keys.Return Then
>             If (Shift And VB6.ShiftConstants.ShiftMask) > 0 Then
>                 combobox1.Focus()   
>             Else
>                 TextBox2.Focus() 
>             End If
>         End If    
>     End Sub
> 
> 
> よろしくお願いします

ふつうにこれでできますが、できませんか?
(OS:Win7、VB.Net2010で確認)
ちなみにKeyEventArgsオブジェクトですので、下記の記載で十分なはずですが・・・

    Private Sub TextBox1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
        'タブかリターンキーが押された場合
        If e.KeyCode = Keys.Tab Or e.KeyCode = Keys.Return Then
            'Shiftキーが押されたかの判定
            If e.Shift Then
                ComboBox1.Focus()
            Else
                TextBox2.Focus()
            End If
        End If

    End Sub

引用返信 編集キー/
■69833 / inTopicNo.7)  Re[5]: comboboxのフォーカスが移動
□投稿者/ shu (480回)-(2014/01/31(Fri) 16:46:52)
No69830 (ちゃんさん さん) に返信

VB6.ShiftConstants.ShiftMaskは古い形式で使用は推奨されていないです。
以下のように書いた方がよいです。

    Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
        Dim KeyCode = e.KeyCode
        If KeyCode = System.Windows.Forms.Keys.Tab OrElse KeyCode = System.Windows.Forms.Keys.Return Then
            If e.Shift Then
                ComboBox1.Focus()
            Else
                TextBox2.Focus()
            End If
        End If
    End Sub


そしてこの場合、Tabキーの判定はOS側で行われタブ移動順にしか移動しません。

提示されたコードでは移動出来ないと思われる箇所がみつからないので他の部分が
影響があるかもしれません。またボタンのクリックイベントでFocus移動が出来るか
試してみてはどうでしょう?




引用返信 編集キー/
■69835 / inTopicNo.8)  Re[5]: comboboxのフォーカスが移動
□投稿者/ 魔界の仮面弁士 (520回)-(2014/01/31(Fri) 17:38:46)
No69830 (ちゃんさん さん) に返信
> デバックで確認しました。

デバッ「グ」という突っ込みはさておき。


実行したとき、ComboBox1.Focus() は、戻り値として
True / False を返すはずです。どちらを返してきましたか?

(そもそも Focus を呼び出していなかった…というオチだったりして)


> Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
・VB6 名前空間の利用は避けるようにしていきましょう。
・And/Or と AndAlso/OrElse を使い分けましょう。
・Tab キーの判定に KeyDown イベントを使うべきではありません。
 http://dobon.net/vb/dotnet/control/btndetectarraykey.html


# とか書いているうちに他の人からサンプルが…。
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -