在数据网格 C# WPF 中按下 Enter 获取当前选定的单元格
Get currently selected cell on Enter pressed in a datagrid C# WPF
我是 C# 新手。当我按下回车键并在其他地方使用该值时,我一直在尝试捕获我当前选择的数据网格单元格中的值。我目前正在使用此处理程序的 KeyUp 事件:
private void Cell_OnKeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
DataGrid dg = (DataGrid) sender;
var u = e.OriginalSource as UIElement;
e.Handled = true;
u.MoveFocus(new TraversalRequest(FocusNavigationDirection.Up));
MyType mo = (MyType) dg.CurrentItem;
DoSomething(mo);
}
}
数据网格中 Enter 键的默认行为是退出编辑并向下移动到下面的单元格,除非位于数据网格的底部。
上面的处理程序工作正常,除了当我位于数据网格底部时。我最终获取了上面单元格的值...
我试过一些这样的技巧:
bool notEnd = u.MoveFocus(new TraversalRequest(FocusNavigationDirection.Down));
if (notEnd)
{
u.MoveFocus(new TraversalRequest(FocusNavigationDirection.Up));
}
u.MoveFocus(new TraversalRequest(FocusNavigationDirection.Up));
但后来我 运行 遇到无法区分底部两个单元格的问题。
所以我想我有两个问题,我很乐意回答其中一个问题:
1.有没有办法确定您何时位于数据网格的底行?
2。有没有办法覆盖数据网格中按下回车键的默认行为?
如果有任何建议,我将不胜感激。谢谢。
2.: 可以,看
Override the enter key, but keep default behavior for other keys in a wpf datagrid
简短:派生自定义 NoEnterDataGrid class,并防止基础 class 在按下回车键时处理 OnKeyDown()。
1.: 使用 KeyDown 事件可能会有所帮助,因为它可能在单元格选择移动之前执行。如果您不想立即执行操作,请将当前单元格存储在 KeyDown 中,然后在 KeyUp 中执行您的操作——但请注意,如果用户在按住 Enter 键的同时单击数据网格,这可能会导致奇怪的行为。
我是 C# 新手。当我按下回车键并在其他地方使用该值时,我一直在尝试捕获我当前选择的数据网格单元格中的值。我目前正在使用此处理程序的 KeyUp 事件:
private void Cell_OnKeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
DataGrid dg = (DataGrid) sender;
var u = e.OriginalSource as UIElement;
e.Handled = true;
u.MoveFocus(new TraversalRequest(FocusNavigationDirection.Up));
MyType mo = (MyType) dg.CurrentItem;
DoSomething(mo);
}
}
数据网格中 Enter 键的默认行为是退出编辑并向下移动到下面的单元格,除非位于数据网格的底部。
上面的处理程序工作正常,除了当我位于数据网格底部时。我最终获取了上面单元格的值...
我试过一些这样的技巧:
bool notEnd = u.MoveFocus(new TraversalRequest(FocusNavigationDirection.Down));
if (notEnd)
{
u.MoveFocus(new TraversalRequest(FocusNavigationDirection.Up));
}
u.MoveFocus(new TraversalRequest(FocusNavigationDirection.Up));
但后来我 运行 遇到无法区分底部两个单元格的问题。
所以我想我有两个问题,我很乐意回答其中一个问题:
1.有没有办法确定您何时位于数据网格的底行?
2。有没有办法覆盖数据网格中按下回车键的默认行为?
如果有任何建议,我将不胜感激。谢谢。
2.: 可以,看 Override the enter key, but keep default behavior for other keys in a wpf datagrid
简短:派生自定义 NoEnterDataGrid class,并防止基础 class 在按下回车键时处理 OnKeyDown()。
1.: 使用 KeyDown 事件可能会有所帮助,因为它可能在单元格选择移动之前执行。如果您不想立即执行操作,请将当前单元格存储在 KeyDown 中,然后在 KeyUp 中执行您的操作——但请注意,如果用户在按住 Enter 键的同时单击数据网格,这可能会导致奇怪的行为。