我有一个示例方法OnKeyDownHandler:
private void OnKeyDownHandler(object sender, KeyEventArgs e)
{
if (e.Key == Key.Delete)
{
if (sender == listBox)
listItemDelete();
if (sender == dataGrid)
dataGridItemDelete();
}
}
我有DataGrid
和ListBox
。现在,当我按下Delete-Key
并选择了一个项目时,我想删除一个项目。
现在我们会遇到以下情况:
我的SelectedItem
中有一个listBox
并且关注它。当我按Deletey-Key
时,OnKeyDownHandler-Event
会被触发。
我的SelectedItem
中有一个dataGrid
并且关注它。当我按下Delete-Key
时,OnkeyDownHandler-Event
将不会被触发。
当我按下Paste-Key
之类的任何其他键时,将触发OnKeyDownHandler-Event。
当我按Delete-Key
上的dataGrid
时,系统未调用该事件。这是为什么?我无法解释。
编辑:XAML代码
<DataGrid KeyDown="OnKeyDownHandler" />
<ListBox KeyDown="OnKeyDownHandler" />
答案 0 :(得分:2)
KeyDown
上的DataGrid
事件正由活动单元格处理。 DataGridView
控件正在处理事件,而不是代码隐藏。您可以尝试使用PreviewKeyDown
事件代替KeyDown
代替DataGrid
。
答案 1 :(得分:0)
我猜你OnKeyDownHandler附加到列表框而不是数据网格。在Window_Loaded或Page_Loaded或XAML
中需要dataGrid.OnKeyDown += OnKeyDownHandler;
之类的内容
<DataGrid ... OnKeyDown="OnKeyDownHandler" ... ></DataGrid>