2014-03-12 6 views
0

시스템 트레이에 내 winapp를 최소화하려고합니다. codeproject에서 샘플 프로젝트를 다운로드했습니다. 그러나 Form.Resize 이벤트에서 신비에 간다. 코드 -Windows 응용 프로그램의 NotifyIcon 및 Form.Resize 이벤트

private void Form_Resize(object sender, EventArgs e) 
    { 
     notifyIcon1.BalloonTipTitle = "Minimize to Tray App"; 
     notifyIcon1.BalloonTipText = "You have successfully minimized your form."; 

     if (FormWindowState.Minimized == this.WindowState) 
     { 
      notifyIcon1.Visible = true; 
      notifyIcon1.ShowBalloonTip(500); 
      this.Hide();  
     } 
     else if (FormWindowState.Normal == this.WindowState) 
     { 
      notifyIcon1.Visible = false; 
     } 
    } 

크기 조정 이벤트에서 처리해야합니까? 버튼 클릭 이벤트에서 할 수 있습니까?

+1

Windows 양식은 Windows 상태 알림이 변경되는 이벤트를 허용하지 않습니다 (최소화, 최대화 또는 복원). 최소화 된 상태에서 창을 숨기려면 알림 아이콘을 표시하고 싶습니다. 그러면 알림을받는 유일한 방법은 최소화 된 창인지 아닌지입니다. 그러나 아이콘을 표시하기를 원한다면 창도 최소화되지 않습니다. 그러면이 코드를 양식로드에 배치 할 수 있습니다. –

답변

1

버튼에서이 작업을 수행 할 수 있습니다. 분명한 이유 때문에 버튼이 WindowState에 의존 할 수는 없습니다. 왜냐하면 창이 어쨌든 트레이로 최소화되지 않았을 때만 클릭 될 수 있기 때문입니다.

private void button1_Click(object sender, EventArgs e) 
{ 
    notifyIcon1.BalloonTipTitle = "Minimize to Tray App"; 
    notifyIcon1.BalloonTipText = "You have successfully minimized your form."; 

    notifyIcon1.Visible = true; 
    notifyIcon1.ShowBalloonTip(500); 
    this.Hide(); 
} 

트레이에 "최소화"해야합니다. 실제로는 hide-on-button-click-to-tray라고해야합니다.