0

我有一个示例方法 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-KeyOnKeyDownHandler-Event被触发。

我有一个SelectedItem在我dataGrid的和专注于它的。当我按下 时Delete-KeyOnkeyDownHandler-Event不会触发。

当我按下任何其他键时Paste-Key,将触发 OnKeyDownHandler-Event。

当我按下Delete-Key我的dataGrid. 这是为什么?我无法解释。


编辑:XAML 代码

<DataGrid KeyDown="OnKeyDownHandler" />

<ListBox KeyDown="OnKeyDownHandler" />
4

2 回答 2

2

您的KeyDown事件DataGrid正在由活动单元处理。DataGridView控件正在处理事件,而不是您的代码隐藏。您可以尝试使用PreviewKeyDown事件而不是KeyDown.DataGrid

于 2013-04-30T13:07:19.733 回答
0

I guess you OnKeyDownHandler is attached to the listbox and not to the datagrid. You need something like dataGrid.OnKeyDown += OnKeyDownHandler; in you Window_Loaded or Page_Loaded or in XAML

<DataGrid ... OnKeyDown="OnKeyDownHandler" ... ></DataGrid>
于 2013-04-30T13:03:12.023 回答