2009-11-03 3 views
3

사용자 지정 컨트롤 (C#, Visual Studio)이 있습니다. mousehover 이벤트에 대한 툴팁을 보여주고 싶습니다.Mousehover, 여러 번 표시되는 툴팁

그러나 내가하는 일과 관계없이 표시하지 않거나 여러 번 표시 할 가능성이 있습니다.

가 나는 것처럼 간단 할 것이라고 생각 :

private void MyControl_MouseHover(object sender, EventArgs e) 
{ 
    ToolTip tT = new ToolTip(); 

    tT.Show("Why So Many Times?", this); 
} 

하지만이 작동하지 않습니다. 나는 여러 가지 것을 시도해 보았지만 작동시키지는 못했다. 나는 그것을 표시하기 위해 비공개 필드에 액세스하기 때문에 툴팁을 컴포넌트의 일부로 만들고 싶습니다. 어떤 도움

답변

7

에 대한

덕분에 당신이 당신의 생성자에서 툴팁을 인스턴스화하고 마우스 호버에 그것을 보여주는 시도?

public ToolTip tT { get; set; } 

public ClassConstructor() 
{ 
    tT = new ToolTip(); 
} 

private void MyControl_MouseHover(object sender, EventArgs e) 
{ 
    tT.Show("Why So Many Times?", this); 
} 
+0

도움이됩니다. 그러나 시도 : 개인 도구 설명 tT = 새 ToolTip(); mousehover 이벤트 외부에 있지만 작동하지 않습니다. 생성자가 선언 될 때가 아니라 생성자에서 인스턴스가 다른 이유는 무엇입니까? – EatATaco

+0

사실, 방금 다시 시도해 보니 효과가있었습니다. 내가 처음 실수 한 이유를 모르겠다. 다시 한번 감사드립니다. – EatATaco

+0

@EatATaco 기꺼이 도와 드리겠습니다! – Joseph

1

MouseHover는 마우스를 컨트롤 위에서 움직일 때마다 발생합니다. 따라서 이벤트가 발생할 때마다 새로운 툴팁이 생성됩니다. 이것이 위젯의 ​​여러 인스턴스를 보는 이유입니다. Joseph의 대답을 시도하십시오.

1

디자이너를 사용하여 툴팁을 추가하기 만하면 질문과는 다른 코드가 생성됩니다.

Form1.designer.cs입니다은 (private 변수는 읽기 쉽 클래스의 상단으로 이동)

partial class Form1 
{ 
    private System.ComponentModel.IContainer components = null; 
    private System.Windows.Forms.Label label1; 
    private System.Windows.Forms.ToolTip toolTip1; 

    // ... 

    private void InitializeComponent() 
    { 
     this.components = new System.ComponentModel.Container(); 
     this.label1 = new System.Windows.Forms.Label(); 
     this.toolTip1 = new System.Windows.Forms.Tooltip(this.components); 

     // ... 

     this.toolTip1.SetToolTip(this.label1, "abc"); 

     // ... 
    } 
}

나는 당신이 당신의 구성 요소에 불과 툴팁 및 컨테이너 물건을 추출 할 수 있습니다 확신합니다.

+0

답변 해 주셔서 감사합니다. –

0

MSDN 읽기 모든 것이 있습니다! 당신은 다른 해결책을 시도 할 수 있습니다

:


private System.Windows.Forms.ToolTip toolTip1; 

private void YourControl_MouseHover(object sender, EventArgs e) 
{ 
    toolTip1 = new System.Windows.Forms.ToolTip(); 
    this.toolTip1.SetToolTip(this.YourControl, "Your text here :) "); 
    this.toolTip1.ShowAlways = true; 
} 

희망은 내가이 작동