2009-06-02 6 views
4

show 메서드를 사용하여 컨트롤에 System.Windows.Forms.Tooltip을 수동으로 표시하고 있는데 툴팁이 현재 표시되어 있는지 어떻게 알 수 있습니까?툴팁이 표시되는지 검색 하시겠습니까?

알아 내기 위해 표시 방법을 변경해야하는 경우 괜찮습니다.

+0

.Net 3.0 또는 3.5를 사용하는 경우 IsOpen 플래그가 있습니다. 2.0 프레임 워크에서는 ToolTip.Active가 도움이 될 것으로 생각합니다. 확실하지. – danish

+0

'IsOpen'은 winforms 툴팁이 아닌 WPF 툴팁의 속성 일뿐입니다. – Xilconic

+0

ToolTip.Active 속성은 도구 설명의 표시 여부와 관계가 없습니다. 그러나 코드가 변경 될 때까지 코드가이를 유지합니다. –

답변

9

당신은 ToolTip.GetToolTip (제어)를 시도하고 반환 값이 빈 문자열이 아닌 경우 다음과 같이 확인할 수 있습니다 :

if (!string.IsNullOrEmpty(myToolTip.GetToolTip(myControl))) 
{ 
    // Victory! 
}
+1

'GetToolTip' (winforms에 대해 테스트 됨)은'SetToolTip' 메소드가'Control'에 대해 호출되었는지 검사합니다. 그렇다면 도구 설명이 표시되는지 여부에 관계없이 텍스트가 반환됩니다. 지금까지 보았 듯이'GetToolTip'의 반환 값과'Show'가 호출 된 경우에는 아무런 관련이 없습니다. – Xilconic

+2

이 허용되는 대답은 잘못되었습니다. 이 도구 설명이 현재 표시되고 있는지 여부를 나타내지는 않지만 컨트롤의 도구 설명 텍스트 값만 가져옵니다. –

1

이 가능하게 표시 할 수있는 유일한 도구 설명을 경우, 토미을 사용 해결책. 툴팁 컨트롤의 외부에있는 경우 그 중 하나 인 경우

, 모든 도구 설명 창을 열거하고 확인할 수 있습니다

가) 양식/응용 프로그램 범위 내에서

B)를 표시

다소

Native.EnumWindows ew = new Native.EnumWindows(); 
ew.GetWindows(); 


foreach (EnumWindowsItem item in ew.Items) 
{ 
    //find all windows forms tooltips currently visible 
    if (item.ClassName.StartsWith("WindowsForms10.tooltips_class32") && item.Visible) 
    { 
     //check if tooltip is on within form bounds 
     if (item.Location.X >= this.Location.X && item.Location.Y >= this.Location.Y && 
      item.Location.X <= this.Location.X + this.Width && 
      item.Location.Y <= this.Location.Y + this.Height) 
     { 
      //Tooltip currently shown within form bounds 
     } 
    } 

} 

EnumWindows 상호 운용성 래퍼 this code를 사용하여이있다. 약간의 해킹입니다. Tommy의 솔루션이 도움이된다면, 많이입니다.

+0

래퍼 코드에 대한 링크가 끊어졌습니다. – ThunderGr

2

저는 내장 된 툴팁으로 많은 어려움을 겪었습니다. 타이머와 함께 내 자신을 만들고 MouseMoved를 추적했습니다.

관련 문제