DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Enterキーでフォーカス移動が変!?

環境/言語:[WindowsXP、VB.NET、.NET Framework Ver1.1.4322 SP1]
分類:[.NET]

2度目の投稿です。
WindowsXP、VB.NET、.NET Framework Ver1.1.4322 SP1で開発しています。

 | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
 | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
 |      ____________                    |
  | コード:|          |  _______________   |
  |       ̄ ̄ ̄ ̄ ̄ ̄  | 照会 | 設定 |   |
  |                     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  |
  || ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||
  ||                                    ||
  ||                                    ||
  ||               Spread               ||
  ||                                    ||
  ||                                    ||
  ||                                    ||
  ||                                    ||
  ||____________________________________||
  |                           _________  |
  |                           | 終了  |  |
  |                            ̄ ̄ ̄ ̄   |
    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

上記のような画面で、Enterキーでフォーカス移動を行っています。
(下記ソースです。)
    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
        If e.KeyCode = Keys.Enter Then
            If e.Control = False Then
                Me.SelectNextControl(Me.ActiveControl, Not e.Shift, True, True, True)
            End If
        End If
    End Sub

    Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress
        If e.KeyChar = ControlChars.Cr Then
            e.Handled = True
        End If
    End Sub

フォーカス移動は問題ないのですが、以下の動作の時、正しく動かなくなります。
・デフォルト設定:TextBox.Enabled = True
                  照会ボタン Enabled = True
                  設定ボタン Enabled = False
                  Spread Enabled = False
1.)TextBoxにコードを入力。
2.)Enterキーでフォーカス移動。(照会ボタンへ移動)
3.)照会ボタンをEnterキーでクリック。
4.)TextBox Enabled=False
   照会ボタン Enabled=False
   設定ボタン Enabled=True
   Spreadへデータ表示
   Spread Enabled=True
   SpreadへFocus移動
5.)条件設定ボタンをクリック。
6.)TextBox Enabled=True
   照会ボタン Enabled=True
   設定ボタン Enabled=False
   Spreadへデータクリア
   Spread Enabled=False
      TextBoxへFocus移動

この動作をしたあと、Enterキーでカーソル移動しようとすると、
照会ボタンのクリックイベントが発生してしまいます。
なぜ、そうなるのか全く分からず、調べる手立ても考え付かない状態です・・・。

どなたか、ご教示下さい・・・。
宜しくお願い致します。
こんにちは、じゃんぬ です。

■No13309に返信(SOMYさんの記事)
> TextBoxへFocus移動

これはちゃんとフォーカス遷移しているのでしょうか?
TextBox にカレットが表示された状態になっていますか?

問題ないようでしたら、UpdateDefaultButton が実行されず、
デフォルトのボタンが [照会] のままになっているかもしれません。
MDI 子フォームでの不具合で似た事象はありました。
■No13310に返信(じゃんぬねっとさんの記事)
> こんにちは、じゃんぬ です。
>
> これはちゃんとフォーカス遷移しているのでしょうか?
> TextBox にカレットが表示された状態になっていますか?
>
> 問題ないようでしたら、UpdateDefaultButton が実行されず、
> デフォルトのボタンが [照会] のままになっているかもしれません。
> MDI 子フォームでの不具合で似た事象はありました。

 早速の返信、ありがとうございます。
 UpdateDefaultButton とは、何者ですか?
 無知なもので・・・。
 ちなみに、フォーカスの遷移はしています。
 TextBoxにカレットが表示されています。
 またまた、ちなみに問題のFormはMDI子フォームです。
> ■No13310に返信(じゃんぬねっとさんの記事)
>こんにちは、じゃんぬ です。
>
>これはちゃんとフォーカス遷移しているのでしょうか?
>TextBox にカレットが表示された状態になっていますか?
>
>問題ないようでしたら、UpdateDefaultButton が実行されず、
>デフォルトのボタンが [照会] のままになっているかもしれません。
>MDI 子フォームでの不具合で似た事象はありました。

 すいません。
 あまりに他力本願だと悟って、自分で調べました。
 この現象は、.NET Frameworkのバグみたいですね?
 以下コードをMDIフォームに書いてオーバーライドしてやったら
 回避できました。
Protected Overrides Sub UpdateDefaultButton()
'何もしない
End Sub

 ありがとうございました!!
 解決です!!
チェック忘れです・・・。
すいません。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板