Gần đây tôi đã gặp một vấn đề tương tự. Thay vì hack back-end, tôi đã triển khai một work-around, sử dụng BalloonTipText, có thể chứa khá nhiều nhân vật.
Chú giải công cụ được hiển thị trên sự kiện MouseMove đầu tiên trên biểu tượng khay và chú giải công cụ được hiển thị trong 2 giây. Atter tooltip được đóng lại, nó có thể được mở lại bằng một sự kiện MouseMove mới.
Nhược điểm duy nhất với giải pháp này là không thể đóng bóng theo chương trình, khi người dùng nói rời khỏi khu vực biểu tượng, vì vậy nó chỉ biến mất sau khi hết giờ hoặc nếu người dùng nhấp vào X nhỏ nút.
Lưu ý rằng tiêu đề và văn bản có thể được đặt bất cứ lúc nào ở nơi khác trong chương trình. Chúng được đặt ở đây trong sự kiện chỉ cho mục đích trình diễn.
CHỈNH SỬA:ShowBalloonTip()
bổ sung cháy tầng tầng MouseMove
sự kiện, vì vậy cần phải tắt sự kiện này cho đến khi chú giải công cụ bóng được ẩn. Ngoài ra, BalloonTipClosed
là (theo the documentation) chỉ được kích hoạt khi người dùng chủ động nhấp vào 'X', mặc dù tôi đã quan sát thấy nó được kích hoạt khi chú giải công cụ đóng sau một thời gian chờ. Do đó, tôi đã thêm một bộ đếm thời gian trợ giúp để thiết lập lại sate, thay vì dựa vào sự kiện BalloonTipClosed
. Mã sửa đổi và thử nghiệm dưới:
private bool balloonTipShown;
private Timer balloonTimer;
private void trayIcon_MouseMove(object sender, MouseEventArgs e)
{
if (balloonTipShown)
{
return;
}
balloonTipShown = true;
trayIcon.MouseMove -= trayIcon_MouseMove;
balloonTimer = new Timer();
balloonTimer.Tick += balloonTimer_Tick;
balloonTimer.Interval = 2005;
balloonTimer.Start();
trayIcon.ShowBalloonTip(2000);
}
void balloonTimer_Tick(object sender, EventArgs e)
{
balloonTipShown = false;
balloonTimer.Stop();
balloonTimer.Dispose();
trayIcon.MouseMove += trayIcon_MouseMove;
}
EDIT 2: Một ảnh chụp màn hình của một tooltip bóng với khá nhiều văn bản, mà sử dụng giải pháp này có thể seen in by blog.
Bất kỳ hack nào cho C++? –
Không cần hack, bạn chỉ cần đặt macro WINVER chính xác để trình biên dịch biết rằng bạn đang nhắm mục tiêu ít nhất Windows 2000. –
Xin lỗi, tôi muốn vượt qua giới hạn tương tự trong 'szInfoTitle', đặt tiêu đề cho cửa sổ bật lên bong bóng . Có cách giải quyết nào cho điều đó không? –