2

UserControl i デザインタイム内に Panel を追加しました。

次に、このコントロールをフォームに追加しました。

コントロールにフォーカスがあるときに、フォーカスの破線の境界線を表示したい。

残念ながら、Enterパネルからのイベントは発生しません。ユーザーコントロール自体をクリックしたときにのみ発火します。

この質問を拡張するには。ユーザー コントロール内のコントロールからベース ユーザー コントロールにイベントを転送するにはどうすればよいですか? この質問の Hans Passant からのコメントによると、デフォルトでは、イベントは直接の親に転送されます。コントロールのプロパティは変更しませんでした。私は何を間違っていますか?未処理のイベントを強制的に転送するために各コントロールで変更する必要がある明らかなプロパティはありますか?

コントロールを使用してDevExpressいますが、この動作は WindowsWinFormsコントロールでも同じです。

編集:パネルがフォーカスを取得できない可能性があることを理解しています。これが正しい場合、各マウス イベントを親コントロールに転送するにはどうすればよいですか?

4

2 に答える 2

2

コメントに基づいて、UserControl 内から、パネルの MouseDown イベントを処理し、フォーカスを親コントロールに設定します。

public UserControl1() {
  InitializeComponent();
  panel1.MouseDown += new MouseEventHandler(panel1_MouseDown);
}

void panel1_MouseDown(object sender, MouseEventArgs e) {
  if (!this.Focused)
    this.Focus();
}
于 2012-04-30T16:40:29.020 に答える
0

パネルの MouseClick イベントで panel1.Select() を使用すると、 panel1.Enter および panel1.Leave をトリガーできます。

于 2015-10-13T22:37:10.747 に答える