• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VisualBasic 2010 WPFのData)

VisualBasic 2010 WPFのData

このQ&Aのポイント
  • VisualBasic 2010を利用してWindows FormアプリケーションにWPFのDataGridを配置しております。
  • フォームよりWPFのDataDrid内の値を編集した場合にDattableに反映したい
  • DataGridにTextBoxを2つ配置(数量1、数量2)しておりますが、エンターキー押下時に数量1、数量2の順でカーソル遷移できないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (776/5751)
回答No.1

(2)エンターキーで数量1、数量2の順で遷移する方法 色々ありそうですが、簡単な方法を紹介します。 まず、Item_MainのKeyDownイベントで試されてたのでしたら、 このイベントではエンターキーを取得できないので、 それ以外の処理がなければなくしてください。 エンターキーを取得するには、PreviewKeyDownを使います。 WPFではPreview~と言うイベントがあればそれを優先して使う、 と思っていいと思います。 私はその仕組みは理解していませんが、Preview~でだめなら、 Previewではないもので試すようにしています。 さて、本題です。 Private Sub DataGrid_1_PreviewKeyDown(ByVal sender As Object, ByVal e As System.Windows.Input.KeyEventArgs) Handles DataGrid_1.PreviewKeyDown Select Case e.Key Case System.Windows.Input.Key.Enter CType(System.Windows.Input.Keyboard.FocusedElement, System.Windows.FrameworkElement).MoveFocus(New System.Windows.Input.TraversalRequest(System.Windows.Input.FocusNavigationDirection.Next)) e.Handled = True End Select End Sub やたら長いので、以下のインポートを追加して、適当に省略してみてください。 Imports System.Windows Imports System.Windows.Input 簡単に説明すると、 現在フォーカスがある要素(Keyboard.FocusedElement)から、 フォーカスを移動(MoveFocus)する、 その移動方向はタブオーダー内の次の要素(New TraversalRequest(FocusNavigationDirection.Next))へ。 後続のキーイベントは発生させないでね(e.Handled = True)。 これで数量1から数量2へは遷移できるようになると思います。 まずは試してみてください。 試すとわかりますが、数量2からは次の行へ遷移するだけです。 おそらく次の行の下地のセルかグリッドに遷移しているようです。 もう一度エンターキーを押すと数量1に遷移します。 数量2からは次の行の数量1へ直接遷移して欲しいところですが、 いまのところその方法がわかっていません。 これはこれで便利な使い方もできます。 数量2でエンターキーを押して次の行に遷移すると、 この状態ではカーソルキーの上下キーで前後の行へ移動できます。 入力したい行まで戻ったり進んだりして、エンターキーを押すと、 数量1の入力ができるので、私はこれでいいなと思っています。 私がテンプレートを使ったことがないため、 このような方法しか思いつきませんでした。 下地のセルかグリッドをFocusable="False"にできるか、 そこにフォーカスがきたらText_1に移動させればよさそうな気がします。

すると、全ての回答が全文表示されます。

関連するQ&A