1

私は(カスタム)を持っていMyTextboxます。MyTextbox は on (custom)MyPanelにあり、パネルは にありMyFormます。

ユーザーが MyTextbox でテキストを編集して押すと、「DEL」と言うと、MyForm は_KeyDownイベントを受け取ります...

しかし、フォームで「削除」を押したときに実行する別のアクションをプログラムしたため、テキストボックスの選択削除とともにフォームアクションを実行します...

テキストボックスからフォームへのイベントの伝播を停止する方法、またはテキストボックスをイベントの送信者として識別する方法は?

PS。複数の理由でKeyPreview
を「False」 にできません。別の解決策を見つける必要があります。

PPS。
編集可能な「長方形」がある MS Word エディターを想像してみてください... 長方形内のテキストを編集する場合 (編集モードでは長方形が選択されています)、「Del」は長方形内の文字を削除する必要があります。長方形自体を削除する必要があります...(長方形が選択されている場合)。

私の場合、長方形の編集モードでテキストを選択しましたが、テキストを削除する代わりにDELを押すと、長方形自体が削除されます....

4

1 に答える 1

1

フォームのKeyPreviewプロパティがFalseに設定されていることを確認します。これは通常、フォームのデフォルトです。

考えられる回避KeyPreview=true策は、アクティブなコントロールを確認し、フォームによる主要なイベントの処理をフィルタリングすることです。

protected override void OnKeyDown(KeyEventArgs e) {
  if (ActiveControl.GetType() != typeof(TextBox)) {
    base.OnKeyDown(e);
  }
}
于 2012-10-10T13:17:36.577 に答える