質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
DataGrid

GUIの一種であり、データを表の形式でみることが可能です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

6761閲覧

c# [WPF]Datagridでフォーカスセルを移動したい

Harigane

総合スコア16

DataGrid

GUIの一種であり、データを表の形式でみることが可能です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

1グッド

0クリップ

投稿2020/01/11 22:50

前提・実現したいこと

WPFのDataGridでEnterキーを押したときに、フォーカスセルを最初のセル[x:0, y:0]に移動するプログラムを作りたいです。
Enterキーで移動するので、CurrentCell変更後にe.handled = trueにしたところ、
枠は移動するのですが、背景色まで移動できません。

Enterを押す前
イメージ説明

Enterを押した後
イメージ説明

何かいい方法はないでしょうか?

該当のソースコード

C#

1private void TestDG_KeyDown(object sender, KeyEventArgs e) 2{ 3 if(e.Key == Key.Enter) 4 { 5 testDG.Focus(); 6 testDG.CurrentCell = new DataGridCellInfo(testDG.Items[0], testDG.Columns[0]); 7 8 //ここをコメントアウトすると動作するが、フォーカスが[x:0,y:1]になってしまう。 9 e.Handled = true; 10 } 11}
TN8001👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

DataGrid.KeyDownにEnterは来ない気がするんですが、DataGrid.PreviewKeyDownなんですかね?

cs

1private void TestDG_PreviewKeyDown(object sender, KeyEventArgs e) 2{ 3 if(sender is DataGrid dataGrid) 4 { 5 if(e.Key == Key.Enter) 6 { 7 e.Handled = true; 8 dataGrid.Focus(); 9 var cellInfo = new DataGridCellInfo(dataGrid.Items[0], dataGrid.Columns[0]); 10 dataGrid.CurrentCell = cellInfo; 11 12 if(dataGrid.SelectionUnit == DataGridSelectionUnit.FullRow) 13 { 14 dataGrid.SelectedIndex = 0; 15 } 16 else 17 { 18 dataGrid.SelectedCells.Clear(); 19 dataGrid.SelectedCells.Add(cellInfo); 20 } 21 } 22 } 23}

これで希望の動作になっているように思います。

投稿2020/01/12 00:13

編集2023/07/17 13:52
TN8001

総合スコア9317

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Harigane

2020/01/12 00:17

ありがとうございます。うまく動作しました。 ご指摘の通り、PreviewKeyDownです。名前を変えるのを失念しておりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問