我正在使用C#WinForms的桌面應用程序。我用菜單欄在不同的面板之間導航。我面臨的問題是我無法突出顯示菜單欄圖標的活動顏色。圖示說明 將更好地解釋我想要的功能。我們如何突出顯示點擊菜單條上的活動菜單項?
這是我的菜單條
和點擊MenuStripItem我想要實現這個
總之我要在菜單條項保留高亮當我按點擊就可以了,就像搜索和編輯在畫面和事後如果我在 新客戶點擊那麼它必須被強調爲搜索&編輯
我正在使用C#WinForms的桌面應用程序。我用菜單欄在不同的面板之間導航。我面臨的問題是我無法突出顯示菜單欄圖標的活動顏色。圖示說明 將更好地解釋我想要的功能。我們如何突出顯示點擊菜單條上的活動菜單項?
這是我的菜單條
和點擊MenuStripItem我想要實現這個
總之我要在菜單條項保留高亮當我按點擊就可以了,就像搜索和編輯在畫面和事後如果我在 新客戶點擊那麼它必須被強調爲搜索&編輯
您可以使用ToolStrip
代替並將項目Checked
屬性設置爲true。要做到這一點,你可以處理ItemClicked
事件的ToolStrip
和檢查項目是這樣的:
private void toolStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
foreach (ToolStripButton item in ((ToolStrip)sender).Items)
{
if (item != e.ClickedItem)
item.Checked = false;
else
item.Checked = true;
}
}
這樣,它顯示了一個邊框檢查項目。如果您有任何理由不與外觀滿意,你可以簡單地創建自定義渲染器,併爲ToolStrip
的渲染器分配給它這種方式定製檢查項目的外觀:
public class MyRenderer : ToolStripProfessionalRenderer
{
public MyRenderer() : base(new MyColorTable())
{
}
}
public class MyColorTable : ProfessionalColorTable
{
public override Color ButtonCheckedGradientBegin
{
get { return ButtonPressedGradientBegin; }
}
public override Color ButtonCheckedGradientEnd
{
get { return ButtonPressedGradientEnd; }
}
public override Color ButtonCheckedGradientMiddle
{
get { return ButtonPressedGradientMiddle; }
}
}
而且在Load
事件指派渲染在你的表單的構造函數中這樣初始化組件之後:
toolStrip1.Renderer = new MyRenderer();
這樣,它顯示選中的項目爲突出顯示。
謝謝你,他幫了我很多。最好使用toolstrip而不是menustrip。謝謝 – Ezaz
選定的項目可以在Paint
改變(不知道是否有更合適的事件)://計算器:
public Form1()
{
InitializeComponent();
ToolStripItem activeToolStripItem = null;
menuStrip1.Paint += (o, e) => activeToolStripItem?.Select();
menuStrip1.ItemClicked += (o, e) => activeToolStripItem = e.ClickedItem;
}
[變化的WinForms菜單下拉列表邊框的顏色(HTTPS的可能的複製。 com/questions/32307778/change-the-border-color-of-winforms-menu-dropdown-list) – Plutonix
使用'ToolStrip'會更好嗎?然後,您可以將切換按鈕添加到「ToolStrip」,並將與活動面板相對應的按鈕設置爲「已檢查」。 – erdomke