2013-12-16 11 views
5

Chúng tôi đang sử dụng NotifyIcon để thông báo cho người dùng khi họ nhận được một tin nhắn mới cần sự chú ý của họ. Trong trường hợp ai đó nhận được tin nhắn đầu tiên, biểu tượng thông báo sẽ bị ẩn lần nữa, tuy nhiên tôi đang gặp vấn đề với việc tìm cách đóng bong bóng từ mã phía sau.Tôi làm cách nào để đóng một NotifyIcon BallonToolTip từ mã?

Mã của tôi trông giống như sau:

myNotifyIcon.ShowBalloonTip(2000, title, message, icon); 

Tôi đã cố gắng tìm thấy những gợi ý here, nhưng không ai phù hợp.

  • Sử dụng myNotifyIcon.Visible = true không giấu nó

  • Sử dụng myNotifyIcon.Visible = false; myNotifyIcon.Visible = true; sẽ giấu nó, nhưng nó cũng ẩn biểu tượng trong khay và khi nó được hiển thị một lần nữa, nó cho thấy một một vị trí khác.

  • myNotifyIcon.Show(0) không phải là một phương pháp hợp lệ

  • myNotifyIcon.ShowBalloonTip(0) hoặc myNotifyIcon.ShowBalloonTip(1) không xuất hiện để làm việc như các khinh khí cầu chỉ được hiển thị và không xuất hiện để đi vào riêng của mình ở tất cả.

tôi đọc this question về việc sử dụng WinAPI để tìm ra cửa sổ và gửi một thông điệp WM_CLOSE, nhưng tôi không quá chắc chắn làm thế nào để làm điều đó đáng tin cậy.

Làm cách nào để đóng một số NotifyIcon từ mã phía sau?

+0

OMG Rachel bạn đang làm công cụ winforms? –

+0

Bạn đã thử notifyIcon.Icon = null; – techno

+1

Nó không được hỗ trợ bởi hàm winapi gốc. Cách giải quyết thô là hủy bỏ NotifyIcon. –

Trả lời

1

Tôi chưa bao giờ tìm thấy cách không hacky để làm điều đó. Các tài liệu cho biết:

tối thiểu và thời gian chờ tối đa giá trị được thi hành bởi các hoạt động hệ thống và thường 10 đến 30 giây, tương ứng, tuy nhiên này có thể khác nhau tùy thuộc vào hệ điều hành. Giá trị hết thời gian là quá lớn hoặc quá nhỏ được điều chỉnh theo giá trị tối thiểu hoặc tối thiểu thích hợp.

Mặc dù điều này không giải quyết cụ thể câu hỏi đóng bóng rõ ràng, nó cho tôi biết rằng người gọi phương thức ShowBalloonTip() đơn giản là không có toàn quyền điều khiển quả bóng, khi nó được hiển thị.

Lựa chọn tốt nhất mà tôi đã tìm thấy là một trong những bạn đã đề cập:

myNotifyIcon.Visible = false; 
myNotifyIcon.Visible = true; 

Không lý tưởng, nhưng nó hoạt động. Một ý tưởng khác là thay đổi thông báo được hiển thị trong hộp chú giải để cho biết rằng thư trước đó đã lỗi thời:

myNotifyIcon.ShowBalloonTip(2000, "Title", "Never mind!", ToolTipIcon.Info); 
0

Có một cách đơn giản để thực hiện điều đó.

myNotifyIcon.ShowBalloonTip(2000); 
myNotifyIcon.visible = true; 
this.Hide(); 

Hãy thử điều này, nó chắc chắn sẽ hoạt động 100%.

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