ฉันจะแสดงคำแนะนำเครื่องมือบนปุ่มโดยใช้Windows Forms ได้อย่างไร
ฉันจะแสดงคำแนะนำเครื่องมือบนปุ่มโดยใช้Windows Forms ได้อย่างไร
คำตอบ:
เคล็ดลับเครื่องมือเป็นตัวควบคุม WinForms ที่จัดการแสดงเคล็ดลับเครื่องมือสำหรับองค์ประกอบหลายรายการในแบบฟอร์มเดียว
สมมติว่าปุ่มของคุณเรียกว่า MyButton
เคล็ดลับเครื่องมือจะปรากฏขึ้นโดยอัตโนมัติเมื่อเคอร์เซอร์เลื่อนอยู่เหนือปุ่ม แต่ถ้าคุณต้องการแสดงให้โปรแกรมโทรออก
MyToolTip.Show("Tooltip text goes here", MyButton)
ในรหัสของคุณเพื่อแสดงคำแนะนำเครื่องมือและ MyToolTip.Hide (MyButton) เพื่อให้หายไปอีกครั้ง
ใช้ตัวออกแบบฟอร์ม:
คุณสามารถตั้งค่าเคล็ดลับเครื่องมือโดยใช้โปรแกรมโดยใช้การเรียกต่อไปนี้:
this.toolTip1.SetToolTip(this.targetControl, "My Tool Tip");
คุณสามารถใช้คลาส 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ของตัวควบคุมสำหรับสิ่งอื่นคุณสามารถใช้มันเพื่อเก็บข้อความคำแนะนำเครื่องมือและกำหนดตัวจัดการเหตุการณ์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());
});
}
}
}
ในกรณีนี้ปุ่มทั้งหมดที่มีสตริงในคุณสมบัติแท็กจะถูกกำหนดเป็นเหตุการณ์MouseHover เพื่อให้มันกระชับเหตุการณ์MouseHoverถูกกำหนดแบบอินไลน์โดยใช้การแสดงออกแลมบ์ดา ในกรณีที่ปุ่มโฮเวอร์ใด ๆ จะมีข้อความแท็กที่กำหนดให้กับคำแนะนำเครื่องมือและแสดง
.NET Framework แสดงคลาส ToolTip เพิ่มหนึ่งในแบบฟอร์มของคุณจากนั้นในเหตุการณ์ MouseHover สำหรับแต่ละรายการที่คุณต้องการให้คำแนะนำเครื่องมือทำสิ่งต่อไปนี้:
private void checkBox1_MouseHover(object sender, EventArgs e)
{
toolTip1.Show("text", checkBox1);
}
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");
แน่นอนว่าจัดการเหตุการณ์ mousehover และบอกให้แสดงเคล็ดลับเครื่องมือ t เป็นคำแนะนำเครื่องมือที่กำหนดไว้ในกลมหรือในตัวสร้างโดยใช้:
ToolTip t = new ToolTip();
ดังนั้นตัวจัดการเหตุการณ์:
private void control_MouseHover(object sender, EventArgs e)
{
t.Show("Text", (Control)sender);
}