我對其中每個節點在它,我想與大家分享的ContextMenuStrip裏面有兩個ToolStripMenuItems一個TreeView控件,即:設置ToolStripMenuItem.Visible爲true不起作用
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;
上面的兩行似乎並沒有做任何事情,即經過調試視圖都保持假跨越每條線。
我不認爲我已經設置了這些值的任何事件,至少我沒有附加任何事件。
我在做什麼錯?
可見性也是父控制的一部分。由於您處於「開放」過程中,因此您沒有UI,因此不可見。從試驗和錯誤中我發現即使get/set不是直接賦值,但它確實記得您在渲染之前將其設置爲的內容。顯示控件時,會適當使用'.Visible'。 – 2013-02-07 15:23:09