0

C#プロジェクトにWinFormsフォームを実装しています。
私のフォームはMDIフォームの子です。
私のフォームにはユーザーコントロールが含まれています。
私のユーザーコントロールには、検証ボタンとキャンセルボタンを含むいくつかのボタンが含まれています。

次のロジックを実装したい:

  • フォームがアクティブで、ユーザーがEnterキーを押したときに、検証ボタンのクリックされたイベントが自動的に発生するようにします。
  • フォームがアクティブで、ユーザーがエスケープキーを押したときに、キャンセルボタンのクリックイベントが自動的に発生するようにします。

検証ボタンとキャンセルボタンがユーザーコントロールに含まれていない場合は、フォームのAcceptButtonプロパティとCancelButtonプロパティを設定する可能性があります。

4

2 に答える 2

2

最初の投稿へのコメントで Arthur から提供されたヒントに従って、ユーザー コントロールの Load イベント ハンドラーに記述したコードを次に示します。

// Get the container form.
form = this.FindForm();

// Simulate a click on the validation button
// when the ENTER key is pressed from the container form.
form.AcceptButton = this.cmdValider;

// Simulate a click on the cancel button
// when the ESC key is pressed from the container form.
form.CancelButton = this.cmdAnnulerEffacer;
于 2012-08-29T07:32:50.160 に答える
1
  1. fromtruefromプロパティのKeyPreviewプロパティを設定します。

  2. keyDownEventをフォームに追加します

  3. フォームのkeyDownEventに、次のコード行を含めます

コード

 if(e.KeyValue==13)// When Enter Key is Pressed
 {
     // Last line is performing click. Other lines are making sure
     // that user is not writing in a Text box
      Control ct = userControl1 as Control;
      ContainerControl cc = ct as ContainerControl;
      if (!(cc.ActiveControl is TextBox))
          validationButton.PerformClick(); // Code line to performClick
 }

 if(e.KeyValue==27) // When Escape Key is Pressed
 {
     // Last line is performing click. Other lines are making sure
     // that user is not writing in a Text box
      Control ct = userControl1 as Control;
      ContainerControl cc = ct as ContainerControl;
      if (!(cc.ActiveControl is TextBox))
          cancelButton.PerformClick(); // Code line to performClick
 }

validateButtonまたはcancelButtonは、私が想定しているボタンの名前です。あなたは異なるものを持っているかもしれません。異なる場合は、これら2つの代わりにあなたの名前を使用してください。

于 2012-08-27T15:38:58.073 に答える