2009-04-29 81 views
11

當用戶的鼠標懸停在CheckedListBox中的某個項目上時,是否有一種直接的方式來設置附加文本以顯示在工具提示中?CheckedListBox項目的工具提示?

我會期望能在代碼做的是:

uiChkLstTables.DisplayOnHoverMember = "DisplayOnHoverProperty"; //Property contains extended details 

任何人都可以點我在正確的方向來做到這一點?我已經發現了一些涉及檢測鼠標當前結束的項目並創建一個新的工具提示實例的文章,但這聽起來有些過於人爲,並不是最好的方法。

在此先感謝。

回答

12

將Tooltip對象添加到窗體中,然後爲CheckedListBox.MouseHover添加一個調用方法ShowToolTip()的事件處理程序; 添加MouseMove事件您CheckedListBox它具有以下代碼:

//Make ttIndex a global integer variable to store index of item currently showing tooltip. 
//Check if current location is different from item having tooltip, if so call method 
if (ttIndex != checkedListBox1.IndexFromPoint(e.Location)) 
       ShowToolTip(); 

然後創建ShowToolTip方法:

private void ShowToolTip() 
    { 
     ttIndex = checkedListBox1.IndexFromPoint(checkedListBox1.PointToClient(MousePosition)); 
     if (ttIndex > -1) 
     { 
      Point p = PointToClient(MousePosition); 
      toolTip1.ToolTipTitle = "Tooltip Title"; 
      toolTip1.SetToolTip(checkedListBox1, checkedListBox1.Items[ttIndex].ToString()); 

     } 
    } 
+1

的`點p`線不是必需的 – Maslow 2014-09-25 17:23:06

0

有或沒​​有;這是什麼...

我不知道比你已經描述的更簡單的方法(雖然我可能會重新使用工具提示實例,而不是始終創建新的)。如果你有文章顯示這個,然後使用它們 - 或者使用第三方控件來支持這個本地(無需介意)。

5

另外,還可以使用帶有一個複選框,而不是ListView。此控件有 內置支持工具提示

+0

感謝您的建議,沒有看到。 – 2009-04-29 13:28:14

0

我想擴大弗明的答案,以便可能使他的美妙的解決方案稍微更清晰。

在您工作的表單中(很可能在.Designer.cs文件中),您需要向您的CheckedListBox添加一個MouseMove事件處理程序(Fermin最初建議使用MouseHover事件處理程序,但這不適用於我)。

this.checkedListBox.MouseMove += new System.Windows.Forms.MouseEventHandler(this.showCheckBoxToolTip); 

接着,添加兩個類屬性到表單,工具提示對象和整數跟蹤過去的複選框,其刀尖被證明

private ToolTip toolTip1; 
private int toolTipIndex; 

最後,你需要實現showCheckBoxToolTip () 方法。除了我將事件回調方法與ShowToolTip()方法相結合之外,此方法與Fermin的答案非常相似。另請注意,其中一個方法參數是MouseEventArgs。這是因爲MouseMove屬性需要一個MouseEventHandler,然後提供MouseEventArgs。

private void showCheckBoxToolTip(object sender, MouseEventArgs e) 
{ 
    if (toolTipIndex != this.checkedListBox.IndexFromPoint(e.Location)) 
    { 
     toolTipIndex = checkedListBox.IndexFromPoint(checkedListBox.PointToClient(MousePosition)); 
     if (toolTipIndex > -1) 
     { 
      toolTip1.SetToolTip(checkedListBox, checkedListBox.Items[toolTipIndex].ToString()); 
     } 
    } 
} 
0
通過項目的複選框列表中時listItems

運行,並設置相應的文本作爲該項目「標題」屬性,它會顯示在懸停......

foreach (ListItem item in checkBoxList.Items) 
       { 
        //Find your item here...maybe a switch statement or 
        //a bunch of if()'s 
        if(item.Value.ToString() == "item 1") 
        { 
         item.Attributes["title"] = "This tooltip will display when I hover over item 1 now, thats it!!!"; 
        } 
        if(item.Value.ToString() == "item 2") 
        { 
         item.Attributes["title"] = "This tooltip will display when I hover over item 2 now, thats it!!!"; 
        } 
       } 
注意
相關問題