0

セルの値を検証/コミットするためにEnterキーが押されたDataGridViewときに検出します。私はこのキーを検出しましProcessCmdKeyたが、それと呼ばれる別の同様の方法が存在することを知ってProcessDialogKeyいますが、それらの違いは何ですか?を使用する代わりに、およびキーProcessCmdKeyを検出するために使用するとどうなりますか?EnterTabEscProcessDialogKey

また、アプリケーションに少し問題があります。削除キーを関連付けて、ツリーのWinFormsコンポーネントで現在選択されているアイテムを削除しましたが、DataGridViewセルの編集モードで削除キーを押すと、このイベントが発生します。DataGridViewしたがって、セルが現在編集モードにあり、ツリー内の選択されたアイテムを削除するイベントが発生しないように、ユーザーがDeleteキーを押した場合に、このキーを処理したいと思います。では、これをどのように達成するのでしょうか?ProcessCmdKey削除キーを検出するために使用できますか?その場合、それを消費しますか?それは機能するはずですか?

4

1 に答える 1

1

To validate a row in DataGridView, you should be using RowValidating event, this would save you from all the quirks in ProcessCmdKey. It will also take care of validation if you leave the row by using a mouse, up/down arrow, or page up/down.

Regarding TreeView, you should better use KeyDown event. Without any additional steps, it will only be triggered if TreeView is focused. If you are working inside a DataGridView - it will not fire. That is, Del key will delete text when in Edit mode, delete rows when row is selected, and do nothing if sitting on the cell. This is default behavior of the controls in question - no extra code is required to make it work like that.

You should avoid overriding ProcessCmdKey unless it does not work otherwise (which is rare cases).

于 2012-11-10T18:18:24.253 に答える