2013-04-18 22 views
2

我的工具欄在我的應用程序和上下文菜單中使用相同的選項,所以我想 添加ToolStripButtons雙方的ContextMenuStrip和ToolStrip的,不幸的是我不能做到這一點。 即使我手動添加項目,它只顯示一個。如何添加到ContextMenuStrip和ToolStrip相同的ToolStripButtons?

現在我有按鈕工具欄:

我想是這樣的。我想這個選項是一個,因爲我會經常啓用和禁用這個按鈕,最後有一個選項,爲什麼兩個按鈕?

+0

如果門不是動態的,你可以簡單地separatly建立2比作fonction到syncronize他們 –

+0

我只是做項目手動禁用:toolStripItem1.Disabled = TRUE; contextStripItem1.Disabled = true;對於我現在所有的物品。 –

+0

然後我真的沒有看到問題。你仍然可以讓相同的按鈕具有相同的事件處理程序,所以兩者都會做同樣的事情 –

回答

0

這是一個普遍的問題,我已經找到了最簡單的方法是將一個MenuFeature類,從ToolStripMenuItem繼承裏面的「共享」的代碼。

您仍然必須創建此類的兩個實例,但每個實例都非常輕量級,並且只有兩種用法之間存在任何差異的代碼(即ContextMenu項可能使用ToolStripItemDisplayStyle.ImageAndText,而ToolStrip項可能使用ToolStripItemDisplayStyle.Image)。

這使得通用代碼來定製MenuFeature類中只有一次的存在,但仍允許改變本地此菜單項的每個使用。

如果你想要像Enabled/Visible /等自動同步特性,你可以保持在構造函數中的所有實例的靜態集合,然後使用像EnabledChanged /等事件更新的所有項目。然而,我會建議反對這個,因爲我發現同一個菜單的不同實例'功能'往往需要他們自己的狀態 - 但是這個問題已經超出了這個問題的範圍,那些對我如何管理項目感興趣的人可以評論在這個答案或下午我。

相關問題