2013-07-05 76 views
3

我確定這有一個直接的答案,但我似乎無法弄清楚。無法在`MouseHover`事件中獲得`MouseEventArgs`

我正在嘗試使用我的mousehover事件添加tooltip。從歷史上看,我使用了mousemove事件,但不幸的是這意味着tooltip的更新速度與程序可以做到的一樣快。我只想讓鼠標在我的圖形上靜止時顯示。

問題是我無法獲得e.Location屬性,因爲事件處理程序只使用EventArgs而不是MouseEventArgs。有沒有辦法改變這種情況?或者可以添加一行,如MouseEventArgs mouse = new MouseEventArgs();(我收到一個錯誤,說它需要更多參數,但我不知道是哪一個)。

任何幫助表示讚賞:)

 private void chSysData_MouseHover(object sender, EventArgs e) 
     { 
      //Add tooltip 
      try 
      { 
       int cursorX = Convert.ToInt32(chSysData.ChartAreas[0].AxisX.PixelPositionToValue(e.Location.X)); 
       tipInfo = "System: " + systemVoltage[cursorX].ToString("0.00") + Environment.NewLine + "Current: " + currArray[cursorX].ToString("0.00") + Environment.NewLine; 
       tooltip.SetToolTip(chSysData, tipInfo); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show("Error: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); 
      } 
     } 

回答

6

的Cursor.Position屬性映射到您的圖表。以面板爲例:

private void panel1_MouseHover(object sender, EventArgs e) { 
     var pos = panel1.PointToClient(Cursor.Position); 
     toolTip1.Show("Hello", panel1, pos); 
    } 

請注意,這與使用toolTip1.Show(「Hello」,panel1);但你可能想要調整工具提示位置,使其不與光標重疊。

+0

我讀到這個錯誤:'成員'System.Windows.Forms.Cursor.Position.get'不能訪問實例引用;使用類型名稱來限定它。我從來沒有見過它。任何建議,而我試圖找出它? – tmwoods

+0

「遊標」是類型名稱,而不是對象的名稱。確保不會與您在代碼中使用的變量衝突,您使用的名稱如「cursorX」。如果這沒有幫助,那麼請單擊Ask Question按鈕以更好地記錄您的問題。 –

+0

我剛剛搜索了我的程序並沒有名爲'Cursor'的變量。在我提出另一個問題之前,我會繼續深入挖掘。我不想問,除非我先爲自己研究它。感謝您的幫助:) – tmwoods

相關問題