Làm cách nào tôi có thể hiển thị một chú giải công cụ qua nút bằng Windows Forms ?
Làm cách nào tôi có thể hiển thị một chú giải công cụ qua nút bằng Windows Forms ?
Câu trả lời:
ToolTip thực sự là một điều khiển WinForms xử lý hiển thị các mẹo công cụ cho nhiều thành phần trên một biểu mẫu.
Nói nút của bạn được gọi là MyButton.
Chú giải công cụ sẽ tự động xuất hiện khi con trỏ di chuyển qua nút, nhưng nếu bạn cần hiển thị nó theo chương trình, hãy gọi
MyToolTip.Show("Tooltip text goes here", MyButton)
trong mã của bạn để hiển thị tooltip và MyToolTip.Hide (MyButton) để làm cho nó biến mất một lần nữa.
Sử dụng trình thiết kế biểu mẫu:
Bạn cũng có thể thiết lập mẹo công cụ theo chương trình bằng cách sử dụng lệnh gọi sau:
this.toolTip1.SetToolTip(this.targetControl, "My Tool Tip");
Bạn có thể sử dụng lớp ToolTip:
Tạo một ToolTip cho một điều khiển
Thí dụ:
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");
Đối với tooltip mặc định, điều này có thể được sử dụng -
System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
ToolTip1.SetToolTip(this.textBox1, "Hello world");
Một tooltip tùy chỉnh cũng có thể được sử dụng trong trường hợp nếu định dạng được yêu cầu cho thông báo tooltip. Điều này có thể được tạo bằng cách tùy chỉnh định dạng biểu mẫu và sử dụng nó làm hộp thoại chú giải công cụ trong sự kiện di chuột của điều khiển. Vui lòng kiểm tra liên kết sau để biết thêm chi tiết -
http://newapputil.blogspot.in/2015/08/create-custom-tooltip-dialog-from-form.html
Lười biếng và lưu trữ nhỏ gọn văn bản trong Tag tài sản
Nếu bạn hơi lười biếng và không sử dụng thuộc tính Tag của các điều khiển cho bất kỳ điều gì khác, bạn có thể sử dụng nó để lưu trữ văn bản chú giải công cụ và gán các trình xử lý sự kiện MouseHover cho tất cả các điều khiển như vậy trong một lần như sau:
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());
});
}
}
}
Trong trường hợp này, tất cả các nút có một chuỗi trong thuộc tính Tag được gán một sự kiện MouseHover . Để giữ cho nó nhỏ gọn, sự kiện MouseHover được xác định nội tuyến bằng biểu thức lambda. Trong trường hợp bất kỳ nút nào được di chuột sẽ có văn bản Thẻ được gán cho Tooltip và hiển thị.
.NET framework cung cấp một lớp ToolTip. Thêm một trong số đó vào biểu mẫu của bạn và sau đó vào sự kiện MouseHover cho mỗi mục bạn muốn có một chú giải công cụ, hãy làm như sau:
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");
}
Dựa trên câu trả lời của DaveK , tôi đã tạo tiện ích mở rộng kiểm soát:
public static void SetToolTip(this Control control, string txt)
{
new ToolTip().SetToolTip(control, txt);
}
Sau đó, bạn có thể đặt chú giải công cụ cho bất kỳ điều khiển nào bằng một dòng duy nhất:
this.MyButton.SetToolTip("Hello world");
Chắc chắn, chỉ cần xử lý sự kiện mousehover và nói với nó để hiển thị một mẹo công cụ. t là một chú giải công cụ được xác định hoặc trong toàn cục hoặc trong hàm tạo bằng cách sử dụng:
ToolTip t = new ToolTip();
sau đó xử lý sự kiện:
private void control_MouseHover(object sender, EventArgs e)
{
t.Show("Text", (Control)sender);
}