C# DataGrid和ListBox中的KeyDownHandler事件
我有一个示例方法OnKeyDownHandler:C# DataGrid和ListBox中的KeyDownHandler事件,c#,wpf,onkeydown,C#,Wpf,Onkeydown,我有一个示例方法OnKeyDownHandler: private void OnKeyDownHandler(object sender, KeyEventArgs e) { if (e.Key == Key.Delete) { if (sender == listBox) listItemDelete(); if (sender == dataGrid)
private void OnKeyDownHandler(object sender, KeyEventArgs e)
{
if (e.Key == Key.Delete)
{
if (sender == listBox)
listItemDelete();
if (sender == dataGrid)
dataGridItemDelete();
}
}
我有一个DataGrid
和一个ListBox
。现在,当我按下删除键
并选择一个项目时,我想删除一个项目
现在我们要经历以下情况:
我的列表框中有一个SelectedItem
,它是我关注的焦点。当我按下Deletey键时
将触发OnKeyDownHandler事件
在我的dataGrid
中有一个SelectedItem
,它是我关注的焦点。当我按下Delete键时
,不会触发OnkeyDownHandler事件
当我按下任何其他键(如粘贴键
)时,将触发OnKeyDownHandler事件
在我的dataGrid
上按Delete键时,不会调用该事件。为什么呢?我无法解释
编辑:XAML代码
<DataGrid KeyDown="OnKeyDownHandler" />
<ListBox KeyDown="OnKeyDownHandler" />
我猜OnKeyDownHandler是连接到列表框而不是数据网格的。您需要类似于dataGrid.OnKeyDown+=OnKeyDownHandler代码>在窗口中加载或页面中加载或在XAML中加载
<DataGrid ... OnKeyDown="OnKeyDownHandler" ... ></DataGrid>
您的数据网格上的按键
事件正在由活动单元格处理。DataGridView
控件正在处理事件,而不是您的代码隐藏。您可以尝试使用PreviewKeyDown
事件而不是KeyDown
来处理DataGrid
事件连接的XAML是什么样子的?我已经用XAML代码编辑了我的问题。为什么它对其他键(如粘贴键)如此有效?很高兴它对您有效。如果您的问题得到了回答,请将其标记为已解决。是的,我必须等待2分钟进行标记,而且我当时远离键盘:)