2009-05-28 3 views
5

트레이에서 NotifyIcon을 사용하여 응용 프로그램을 숨기거나 복원하고 응용 프로그램 이벤트 사용자에게 팝업 알림을 보내는 응용 프로그램이 있습니다. 내 응용 프로그램에는 알림 대기열이 있으며 NotificationIcon.BalloonTipClosed 이벤트를 사용하여 풍선을 재설정하고 대기열에 대기 알림이있는 경우 다음 알림을 표시 할시기를 결정합니다.시스템 트레이의 풍선 팁이 닫혀 있는지 어떻게 알 수 있습니까?

이 방법은 일반적인 원인 (사용자가 시간이 초과되면 풍선을 닫고 풍선에서 'X'를 클릭하여 닫는 것을 허용 함)에서 훌륭하게 작동하는 것으로 보입니다. 그러나 세 번째 사례 인 경우 BalloonTipClosed가 ' t이 전화를받을 :이 보이지이지만

  1. 알림 풍선
  2. 팝업 알림 아이콘을 사용자가 마우스 오른쪽 버튼을 클릭는

BalloonTipClosed 이벤트 '아무튼 사라질 풍선을 일으키는 상황에 맞는 메뉴가 나타납니다 이걸로 시작 됐어. 인스턴스 - 프레임 워크의 버그 (2.0을 사용하고있는 것)가 있지만이 문제에 대해 누구나 생각할 수있는 버그가 있습니까? 이 이벤트를받지 못하면 내 응용 프로그램에는 항상 풍선이 보이고 (한 번에 여러 풍선을 표시하지 못하도록하는 부울이 있음), 실행 중일 때는 다른 아이콘이 다시 표시되지 않습니다.

답변

0

나는이 솔루션을별로 좋아하지 않지만 내가 한 일은 다음과 같다. 두 번째 타이머를 폼에 추가하고 10 초 동안 설정했습니다. 알림이 튀어 나오면 타이머를 시작한 다음 BalloonTipClosed에서 멈 춥니 다. 타이머가 틱하면 (BalloonTipClosed가 아직 실행되지 않았 음을 의미) 다음 팁을 수동으로 표시합니다.

결과적으로 아직 해고되지 않았다면, 나는 그것을 돌 봅니다. 그러나 누군가가 있다면 더 나은 해결책을 찾을 수 있습니다.

0

BalloonTipClicked 이벤트의 이벤트 처리기에서 마우스 오른쪽 단추를 클릭했는지 여부와 부울을 false로 설정했는지 확인합니다.

3

이것은 Aarons의 답변에 대한 의견으로는 속하지만 아직 댓글을 달 수 없습니다.

NotifyIcon (및 BalloonTipClosed)에서 BalloonTipClicked 및 MouseClick 이벤트를 처리하면 풍선을 닫을 수있는 모든 방법을 캡처 할 수 있습니다. 주의해야 할 점은 여러 개의 이벤트가 여러 이벤트를 트리거하므로 해당 이벤트를 코드화해야한다는 것입니다 (isClosed = true와 같은 것으로 새로운 풍선이 표시 될 때 다시 설정해야 함).

+0

, 그 나는 icon_click 이벤트를 캡처 할 수 있습니다, 나는 나는 풍선이 그 시점에서 닫힌 알고 동안 다음 풍선을 언제 표시 할 지 모르겠습니다. 즉시 표시하면 사용자가 그곳에서 무엇을 하든지 상관없이 배치됩니다. 클릭 후 지연으로 처리 할 수는 있지만 여전히 타이머가 포함되어 있으므로 모든 인스턴스에서 타이머를 사용하고 싶습니다. – SqlRyan

+0

좋은 지적. 컨텍스트 메뉴가 활성화되지 않은 경우 메뉴 열기 및 닫기 이벤트를 처리하고 다음 풍선 만 표시하는 경우 사용자가 '아래쪽에서 수행 할 수있는 유일한 작업'이라고 가정하면 컨텍스트 메뉴가 활성화됩니다. 사용자가 선택한 메뉴 항목을 기반으로 결정을 내릴 수도 있습니다. – Bob

0

나는 풍선 알림에 대한 레이몬드 첸에서이 게시물에 당신을 도울 수 있습니다 생각 : http://blogs.msdn.com/oldnewthing/archive/2009/05/04/9585032.aspx

이 가진 문제가
+0

이것이 내게 일어난 일이라고 생각합니다. 그러나 레이몬드는 풍선이 닫혔는지 여부를 알 수있는 방법이 없다고 동의합니다. BalloonTipClosed 이벤트는 풍선이 어떤 식 으로든 닫히면 시작되어야하지만 NotifyIcon을 클릭하여 풍선을 닫으면 시작되지 않습니다. 그렇게해야한다고 생각합니다. 아마도 내 앱의 프레임 워크 버전을 업그레이드하고 이것이 동작을 변경하는지 확인합니다. – SqlRyan