2

アプリケーションの起動時に表示されるメイン フォームが MDI コンテナーであるアプリケーションを作成しています。ユーザーがこのメニューを使用して MDI の子を開くことができるように、このフォームにコンテキスト メニューを割り当てました。

これは問題なく動作しますが、MDI 子を右クリックすると、子フォームにコンテキスト メニューが割り当てられていなくても、MDI コンテナー (メイン フォーム) のコンテキスト メニューが開くので、期待 (および希望) しません。右クリックで開くメニュー。

子に親のコンテキスト メニューが表示されないようにするにはどうすればよいですか?

補足として、私は VS2005 で作業していますが、ここでは関係ないと思います。

これを変更するためのオプション/プロパティが見つからないようです.デフォルトの動作は、コンテキストメニューが割り当てられている場合にのみフォームにコンテキストメニューが表示されることだと思います.

4

1 に答える 1

2

残念ながら、子フォームの ContextMenuStrip を null に設定しても、MDI 親の ContextMenuStrip が表示されるだけです。ハックは、空の ContextMenuStrip を子フォームに割り当てることです。

void button1_Click(object sender, EventArgs e) {
  Form2 f2 = new Form2();
  f2.MdiParent = this;
  f2.ContextMenuStrip = new ContextMenuStrip();
  f2.Show();
}
于 2012-09-26T13:42:40.640 に答える