Windows Forms를 사용하여 버튼 위에 툴팁을 표시하려면 어떻게 해야합니까?
Windows Forms를 사용하여 버튼 위에 툴팁을 표시하려면 어떻게 해야합니까?
답변:
도구 설명은 실제로 단일 폼에서 여러 요소에 대한 도구 설명 표시를 처리하는 WinForms 컨트롤입니다.
버튼 이름이 MyButton이라고합시다.
커서를 버튼 위로 가져 가면 툴팁이 자동으로 나타나지만 프로그래밍 방식으로 표시해야하는 경우
MyToolTip.Show("Tooltip text goes here", MyButton)
코드에서 툴팁을 표시하고 MyToolTip.Hide (MyButton)으로 다시 사라지게하십시오.
ToolTip 클래스를 사용할 수 있습니다.
예:
private void Form1_Load(object sender, System.EventArgs e)
{
System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
ToolTip1.SetToolTip(this.Button1, "Hello");
}
new ToolTip().SetToolTip(this.Button1, "Hello");
기본 툴팁의 경우 다음을 사용할 수 있습니다.
System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
ToolTip1.SetToolTip(this.textBox1, "Hello world");
툴팁 메시지에 형식이 필요한 경우 사용자 정의 된 툴팁을 사용할 수도 있습니다. 폼의 사용자 지정 서식을 지정하고 컨트롤의 마우스 가리 키기 이벤트에서 도구 설명 대화 상자로 사용할 수 있습니다. 자세한 내용은 다음 링크를 확인하십시오-
http://newapputil.blogspot.in/2015/08/create-custom-tooltip-dialog-from-form.html
Tag 속성 에 느리고 컴팩트 한 텍스트 저장
약간 게으르고 컨트롤 의 Tag 속성을 다른 용도로 사용하지 않으면 툴팁 텍스트를 저장하고 MouseHover 이벤트 핸들러를 다음과 같은 모든 컨트롤에 할당 할 수 있습니다 .
private System.Windows.Forms.ToolTip ToolTip1;
private void PrepareTooltips()
{
ToolTip1 = new System.Windows.Forms.ToolTip();
foreach(Control ctrl in this.Controls)
{
if (ctrl is Button && ctrl.Tag is string)
{
ctrl.MouseHover += new EventHandler(delegate(Object o, EventArgs a)
{
var btn = (Control)o;
ToolTip1.SetToolTip(btn, btn.Tag.ToString());
});
}
}
}
이 경우 Tag 속성에 문자열이있는 모든 버튼 에는 MouseHover 이벤트 가 할당됩니다 . 컴팩트하게 유지하기 위해 MouseHover 이벤트는 람다 식을 사용하여 인라인으로 정의됩니다. 버튼 위에 마우스를 놓으면 툴팁에 태그 텍스트가 할당되어 표시됩니다.
private void Form1_Load(object sender, System.EventArgs e)
{
ToolTip toolTip1 = new ToolTip();
toolTip1.AutoPopDelay = 5000;
toolTip1.InitialDelay = 1000;
toolTip1.ReshowDelay = 500;
toolTip1.ShowAlways = true;
toolTip1.SetToolTip(this.button1, "My button1");
toolTip1.SetToolTip(this.checkBox1, "My checkBox1");
}
를 기반으로 DaveK의 대답 , 내가 제어 확장을 만들었습니다 :
public static void SetToolTip(this Control control, string txt)
{
new ToolTip().SetToolTip(control, txt);
}
그런 다음 한 줄로 모든 컨트롤에 대한 툴팁을 설정할 수 있습니다.
this.MyButton.SetToolTip("Hello world");
물론, 마우스 오버 이벤트를 처리하고 툴팁을 표시하도록 지시하십시오. t는 다음을 사용하여 전역 또는 생성자에서 정의 된 툴팁입니다.
ToolTip t = new ToolTip();
그런 다음 이벤트 핸들러 :
private void control_MouseHover(object sender, EventArgs e)
{
t.Show("Text", (Control)sender);
}