2009-07-06 38 views
9

Để điền đầy đủ yêu cầu, tôi phải hiển thị chú giải công cụ theo cách thủ công trong 30 giây. Theo msdn tôi chỉ cần sử dụng phương thức "Show".C# Chú giải công cụ không xuất hiện trên "Hiển thị"

toolTip.Show(QuestionHelpText, btnHelp, 30000); 

Nhưng tôi chỉ nhận được hành vi chú giải công cụ chuẩn, có nghĩa là thông báo xuất hiện nửa giây sau lần nhấp của tôi (chỉ vì con trỏ chuột vẫn còn trên nút). Tôi đã thử một số biến thể như

toolTip.Show(QuestionHelpText, btnHelp); 

nhưng vẫn không có gì xảy ra.

Có ai có ý tưởng tại sao không?

Cảm ơn

Trả lời

12

Tôi biết một workaround đơn giản

Đặt một lable (chúng ta hãy đặt tên cho nó labelHelp) với văn bản trống gần nút của bạn

Các mã sau đây nên làm việc

private void btnHelp_Click(object sender, EventArgs e) 
    { 
     toolTip.Show(QuestionHelpText, labelHelp, 3000); 
    } 
+0

tại sao nó hoạt động trên nhãn chứ không phải trên nút? – lostiniceland

+6

nó sẽ hoạt động đối với bất kỳ điều khiển nào. Rob nói đúng rằng toolTip.Show là phương thức chặn. vì vậy khi nó được sử dụng bên trong một trình xử lý sự kiện (tức là bên trong btnHelp_Click) của cùng một điều khiển, nó sẽ không hoạt động như mong đợi. Bí quyết là gọi toolTip.Show để điều khiển khác. Các giải pháp workaround khác có thể là để có một bộ đếm thời gian và bắt đầu toolTip.Show asyncroneosuly (ví dụ trong btnHelp_Click bạn bắt đầu hẹn giờ cho 0,1 giây, và sau đó gọi toolTip.Show trong một sự kiện hẹn giờ). Sử dụng điều khiển thứ 2 trông giống như một cách giải quyết dễ dàng nhất đối với tôi. –

+0

cảm ơn. bây giờ điều này là rõ ràng – lostiniceland

2

"Chú giải công cụ" được khai báo ở đâu?

MSDN không cho biết (trên ToolTip.Show Method documentation) rằng phương pháp Hiển thị là cuộc gọi chặn, vì vậy nếu bạn khai báo toolTip trong một phương thức và sau đó khá nhiều ngay sau đó thoát khỏi phương thức thì chú giải công cụ sẽ rơi ra khỏi phạm vi , khiến nó không hiển thị hoặc biến mất.

+0

Chú giải công cụ được sử dụng trên điều khiển người dùng, do đó được khai báo trong Initiali zeComponent – lostiniceland

0

tôi nghĩ rằng bạn cần để đặt thuộc tính initialDelay của đầu công cụ

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