2013-07-05 4 views
3

확실한 답변이지만 확실하지 않습니다.`MouseHover` 이벤트에서`MouseEventArgs`를 가져올 수 없습니다.

mousehover 이벤트를 사용하여 tooltip을 추가하려고합니다. 역사적으로 나는 mousemove 이벤트를 사용했지만 유감스럽게도 tooltip은 프로그램에서 최대한 빨리 업데이트됩니다. 내 그래프에 마우스가 고정되어있는 것을 보여 주기만하면됩니다.

이벤트 처리기가 MouseEventArgs이 아닌 EventArgs 만 사용하므로이 문제는 e.Location 속성을 가져올 수 없다는 문제가 있습니다. 내가 이것을 바꿀 수있는 방법이 있니? 아니면 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 속성을 매핑합니다. 패널로 예 :이 toolTip1.Show ("안녕하세요"에 Panel1)를 사용에서 그렇지 않으면 다른 아니라고

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

참고; 툴팁 위치를 조정하여 커서가 겹치지 않도록 할 수 있습니다.

+0

나는이 오류에서 읽고있다 :'Member 'System.Windows.Forms.Cursor.Position.get'은 인스턴스 참조로 접근 할 수 없다; 대신 형식 이름으로 한정하십시오 .' 나는 전에 그것을 본 적이 없다. 내가 그걸 알아내는 동안 어떤 제안이라도? – tmwoods

+0

"커서"는 개체의 이름이 아니라 형식 이름입니다. 코드에서 사용하는 변수와 충돌하지 않고 "cursorX"와 같은 이름을 사용하고 있는지 확인하십시오. 그래도 문제가 해결되지 않으면 질문하기 버튼을 클릭하여 문제를 더 잘 문서화하십시오. –

+0

방금 ​​내 프로그램을 검색했고 '커서'라는 변수는 검색하지 않았습니다. 나는 다른 질문을하기 전에 먼저 파고들 것이다. 나는 먼저 그것을 스스로 연구하지 않는 한 묻고 싶지 않다. 도움을 주셔서 감사합니다 :) – tmwoods

관련 문제