У меня есть элемент управления TreeView, для каждого узла которого я хочу поделиться ContextMenuStrip, который имеет два ToolStripMenuItem, то есть:
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, мне кажется, что в следующий раз, когда я захочу показать один из пунктов меню, мне придется дважды щелкнуть по узлу. Странная вещь заключается в том, что при первом щелчке по одному или обоим элементам у меня есть следующий код:
ItemMenuStrip.Visible = true;
ShowLogMenuItem.Visible = true;
Две приведенные выше строки, похоже, ничего не делают, т.е. обе остаются ложными в представлении отладчика после перехода через каждую строку.
Я не думаю, что у меня есть какие-либо события для этих значений, по крайней мере, у меня нет прикрепленных событий.
Что я делаю неправильно?
.Visible
используется соответствующим образом при отображении элемента управления. - person Dominic Zukiewicz   schedule 07.02.2013