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-KeyトリガーOnKeyDownHandler-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

OnKeyDownHandler はデータグリッドではなくリストボックスに接続されていると思います。dataGrid.OnKeyDown += OnKeyDownHandler;Window_Loaded または Page_Loaded または XAML のようなものが必要です

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