好吧,這不是非常優雅,所以忍受着我。
似乎ToolTipText最初是在頂部繪製的,但是一旦下一個ToolStripMenuItems加載(在您的案例中由「插入動作」引起的那些),兩組MenuStrips都會在ToolTipText上方找到它們。所以,我的動機是強制ToolTipText在新的MenuStrip加載後出現。
所以,首先,我爲DropTownStripMenuItem添加了一個DropDownOpened處理函數,它將被稱爲「Insert Action ...」MenuItem。
然後,我添加以下代碼
private void myToolStripMenuItem_DropDownOpened(object sender, EventArgs e)
{
myToolStripMenuItem.Visible = false;
myToolStripMenuItem.Visible = true;
myToolStripMenuItem.ToolTipText = "Tooltip info that you want to see!";
}
這樣做是對的子菜單可以載入等待,切換myToolStripMenuItem的可見性(這是在這一切的醜陋的部分),並重置ToolTipText強制它在加載所有內容之後顯示,並且在所有內容之上顯示。
但是,如果您試圖將鼠標懸停並離開兩次或更多次,則如果這樣做會導致文本閃爍。只用這個代碼給它一個鏡頭,你會明白我的意思。所以,您必須將ToolTipText重置爲空字符串。當同一個MenuItem的DropDownClosed事件觸發時,我這樣做了。
private void myToolStripMenuItem_DropDownClosed(object sender, EventArgs e)
{
myToolStripMenuItem.ToolTipText = "";
}
現在,ToolTipText正好出現在何時何地,我們希望它不會閃爍。
注意:此方法將導致ToolTipText花費一點點時間來顯示比正常。這當然是因爲代碼等待下載菜單加載。此外,切換myToolStripMenuItem.Visible偶爾會在菜單中導致閃爍。不過,我覺得這比顯示一個你看不清的ToolTipText要好得多。
你可以用工具提示爲零件添加示例代碼嗎? – Crimsonland
我使用可用於ToolStripMenuItem的內置工具提示,因此除了設置菜單項的ToolTipText&AutoToolTip(false)屬性並將ContextMenuStrip的ShowItemToolTips屬性設置爲true之外,沒有特殊的工具提示代碼。 – Governor
你確定這種行爲是你想要的嗎?我的直覺告訴我,爲每個菜單項添加大量幫助信息似乎有點混亂...... – Pedery