2008-10-03 33 views

Trả lời

-4

Chắc chắn, chỉ cần xử lý sự kiện mousehover và yêu cầu nó hiển thị mẹo công cụ. t là một tooltip được xác định hoặc trong khu vực địa hoặc trong các nhà xây dựng 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); 
} 
+2

Tôi nghĩ bạn đã bị bỏ phiếu vì đó không phải là cách để sử dụng các điều khiển ToolTip trong Windows Forms. Bạn chỉ cần một điều khiển như vậy trên biểu mẫu và nó hiển thị các mẹo cho tất cả các điều khiển. Xem mã trong các phản hồi khác. – julianz

+1

Tôi đoán lời giải thích không phù hợp với mã, ở đâu trong lời giải thích tôi nói làm hiển thị nó và trong mã tôi khởi tạo nó là tốt. Lỗi của tôi. : P – Fry

+2

@ julianz Trên thực tế, công cụ này hoạt động tốt để có các chú giải công cụ chuyên dụng có thể động nếu bạn muốn tùy thuộc vào trạng thái (trừ khóa học tạo ra - tha thứ cho tôi, tôi chỉ đang cố gắng hợp với tất cả thành một khối). phản ứng trên một tĩnh mạch tương tự ... yshuditelu và Dylan Beattie tương tự mặc dù không có sự khởi tạo. – Fry

31

Bạn có thể sử dụng lớp ToolTip:

Creating a ToolTip for a Control

Ví 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"); 
} 
+1

Đây là giải pháp hoàn hảo vì nó tích hợp trực tiếp với mã VS được tạo tự động. Cảm ơn :) – anon58192932

+0

@DaveK Cảm ơn. Bằng cách này tốt hơn vì tôi có thể xác định tất cả các chú giải công cụ ở một nơi – fedeteka

3

Khuôn khổ .NET cung cấp lớp ToolTip. Thêm một trong những mẫu của bạn và sau đó trên các sự kiện MouseHover cho mỗi mục bạn muốn một tooltip cho, làm điều gì đó như sau:

private void checkBox1_MouseHover(object sender, EventArgs e) 
    { 
     toolTip1.Show("text", checkBox1); 
    } 
182

Các ToolTip thực sự là một điều khiển WinForms xử lý hiển thị mẹo công cụ cho nhiều các phần tử trên một biểu mẫu duy nhất.

Nói nút của bạn được gọi là MyButton.

  1. Thêm một điều khiển ToolTip (trong Common Điều khiển trong biểu mẫu Windows hộp công cụ) vào biểu mẫu của bạn.
  2. Cho nó một cái tên - nói MyToolTip
  3. Đặt "Tooltip trên MyToolTip" tài sản của myButton (dưới Misc trong nút lưới tài sản) vào văn bản sẽ hiển thị khi bạn di chuột qua nó.

Các tooltip sẽ tự động xuất hiện khi con trỏ dao động qua nút, nhưng nếu bạn cần để hiển thị nó programatically, gọi

MyToolTip.Show("Tooltip text goes here", MyButton) 

trong mã của bạn để hiển thị tooltip, và MyToolTip.Hide (myButton) để biến nó trở lại.

+0

, nhưng câu hỏi: nếu tôi có nhiều nút trong biểu mẫu, tôi cần thêm chú giải công cụ hoặc tôi có thể đặt nhiều mô tả và nút cho cùng một chú giải công cụ? – ghiboz

+8

Biểu mẫu của bạn chỉ cần một điều khiển ToolTip duy nhất - mỗi nút có thể có văn bản trợ giúp khác nhau (đây là lý do tại sao "Chú giải công cụ trên MyToolTip" là thuộc tính của điều khiển được liên kết, chứ không phải của điều khiển ToolTip) –

+2

Trong trường hợp đơn giản nhất thêm chú giải công cụ cho Form là điều tốt nhất để làm. Sự cố: tại thời điểm thiết kế của Kiểm soát tùy chỉnh, bạn không có tham chiếu đến Biểu mẫu gốc. Giải pháp: tạo một đối tượng tooltip trong Control. Đừng nghĩ đến đối tượng ToolTip nhất thiết phải được gắn vào Form. –

76

Sử dụng thiết kế mẫu:

  • Kéo điều khiển ToolTip từ hộp công cụ, lên form.
  • Chọn thuộc tính của điều khiển mà bạn muốn đầu công cụ xuất hiện.
  • Tìm thuộc tính 'Chú giải công cụ trên công cụTip1' (tên có thể không phải là công cụMẹo1 nếu bạn thay đổi tên mặc định của nó).
  • Đặt văn bản của thuộc tính thành văn bản mẹo công cụ mà bạn muốn hiển thị.

Bạn có thể thiết lập cũng là mẹo của công cụ programatically sử dụng cuộc gọi sau đây:

this.toolTip1.SetToolTip(this.targetControl, "My Tool Tip"); 
4

Đối với tooltip mặc định 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 chú giải công cụ. Điều này có thể được tạo bằng cách định dạng tùy chỉnh biểu mẫu và sử dụng nó làm hộp thoại chú giải công cụ trên sự kiện di chuột của điều khiển. Vui lòng kiểm tra sau liên kết để biết thêm chi tiết -

http://newapputil.blogspot.in/2015/08/create-custom-tooltip-dialog-from-form.html

3

Lazy và văn bản lưu trữ nhỏ gọn trong Tag tài sản

Nếu bạn là một chút lười biếng và không sử dụng các Tag tài sản của các điều khiển cho bất kỳ thứ gì khác bạn có thể sử dụng để lưu trữ văn bản chú giải công cụ và chỉ định MouseHover trình xử lý sự kiện cho tất cả các điều khiển như vậy:

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 Tag tài sản được gán một kiện MouseHover. Để giữ cho nó nhỏ gọn, sự kiện MouseHover được xác định nội tuyến bằng cách sử dụ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 Chú giải công cụ và được hiển thị.

0
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");} 
+1

Trong khi đoạn mã này có thể giải quyết được câu hỏi, [bao gồm cả giải thích] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) thực sự giúp cải thiện chất lượng bài đăng của bạn.Hãy nhớ rằng bạn đang trả lời câu hỏi cho người đọc trong tương lai và những người đó có thể không biết lý do cho đề xuất mã của bạn. – secelite

Các vấn đề liên quan