2 つの ToolStripMenuItems を持つ ContextMenuStrip を共有する各ノードの TreeView コントロールがあります。
this.BuildTree = new MyApp.MainForm.TreeView();
this.ItemMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
this.DeleteMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ShowLogMenuItem = new System.Windows.Forms.ToolStripMenuItem();
...
this.ItemMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.DeleteMenuItem,
this.ShowLogMenuItem});
そのため、MouseUp イベントでの右クリックの特定の基準に従って、これらをアイテムに表示および非表示にします。両方が非表示の場合、ContextMenuStrip 自体を非表示にします。問題は、ContextMenuStrip を非表示にすると、次にノードを 2 回クリックしなければならないメニュー項目の 1 つを表示したいように見えることです。奇妙なことに、最初のクリックでアイテムの 1 つまたは両方が再表示されます。次のコードがあります。
ItemMenuStrip.Visible = true;
ShowLogMenuItem.Visible = true;
上記の 2 行は何もしていないように見えます。つまり、各行をステップオーバーした後、デバッガー ビューではどちらも false のままです。
これらの値が設定されているイベントはないと思いますが、少なくともイベントは関連付けられていません。
私は何を間違っていますか?