IT

시스템 트레이에 앱 최소화

lottoking 2020. 8. 5. 07:39
반응형

시스템 트레이에 앱 최소화


C # 및 Visual Studio 2010 기반 Windows Forms 앱이 있습니다.

작업 표시 줄이 아닌 시스템 트레이로 앱을 최소화 한 다음 시스템 트레이에서 두 번 클릭 할 때 다시 가져 오려면 어떻게해야합니까? 어떤 생각? 또한 시스템 트레이의 아이콘에서 메뉴를 만드는 방법을 마우스 오른쪽 버튼으로 클릭하면 Login, Disconnect, Connect와 같은 메뉴가 표시됩니다. 또한 시스템 트레이에서 baloon이 것처럼 보이는 방법이 있습니까?

추신 : 이미 notifyIcon을 추가했지만 사용 방법을 모르겠습니다.


폼의 크기 조정 이벤트를 처리하십시오. 이 처리기에서는 조정 이벤트의 기본 기능을 재정비하고 작업 표시 줄이 아닌 시스템 트레이로 양식을 최소화합니다. 폼의 크기 조정 이벤트 처리기에서 다음을 수행하면됩니다. 폼의 WindowState 속성이 FormWindowState.Minimized로 설정되어 있는지 확인합니다. 알림 양식을 숨기고 NotifyIcon 활성화를 한 다음 정보를 그래픽 풍선 팁을 표시하십시오. WindowState가 FormWindowState.Normal이되면 Visible 속성을 false로 설정하여 NotifyIcon 개체를 설정합니다. 이제 작업 표시 줄에서 NotifyIcon 개체를 두 번 클릭하면 창이 다시 나타납니다. 이를 위해 NotifyIcon의 MouseDoubleClick 이벤트를 처리하십시오. 여기에서는 방법을 사용하여 양식을 보여줍니다.

private void frmMain_Resize(object sender, EventArgs e)
{
    if (FormWindowState.Minimized == this.WindowState)
    {
       mynotifyicon.Visible = true;
       mynotifyicon.ShowBalloonTip(500);
       this.Hide();
    }

    else if (FormWindowState.Normal == this.WindowState)
    {
       mynotifyicon.Visible = false;
    }
}

전체 솔루션을 달성하기 위해 발견되었습니다. 위의 답변으로 작업 표시 줄에서 창을 제거하지 표시합니다.

private void ImportStatusForm_Resize(object sender, EventArgs e)
{
    if (this.WindowState == FormWindowState.Minimized)
    {
        notifyIcon.Visible = true;
        notifyIcon.ShowBalloonTip(3000);
        this.ShowInTaskbar = false;
    }
}

private void notifyIcon_MouseDoubleClick(object sender, MouseEventArgs e)
{
    this.WindowState = FormWindowState.Normal;
    this.ShowInTaskbar = true;
    notifyIcon.Visible = false;
}

또한 양식 디자이너를 사용하여 알림 아이콘 제어의 다음 특성을 설정하는 것이 좋습니다.

this.notifyIcon.BalloonTipIcon = System.Windows.Forms.ToolTipIcon.Info; //Shows the info icon so the user doesn't think there is an error.
this.notifyIcon.BalloonTipText = "[Balloon Text when Minimized]";
this.notifyIcon.BalloonTipTitle = "[Balloon Title when Minimized]";
this.notifyIcon.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon.Icon"))); //The tray icon to use
this.notifyIcon.Text = "[Message shown when hovering over tray icon]";

나는 함께 갈 것이다

private void Form1_Resize(object sender, EventArgs e)
{
     if (FormWindowState.Minimized == this.WindowState)
     {
          notifyIcon1.Visible = true;
          notifyIcon1.ShowBalloonTip(500);
          this.Hide();    
     }
     else if (FormWindowState.Normal == this.WindowState)
     {
          notifyIcon1.Visible = false;
     }
}

private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
     this.Show();
     this.WindowState = FormWindowState.Normal;
}


notifyIcon에 아이콘 파일을 추가하는 것을 잊지 않습니다. 언어 트레이에


이 시도

 private void Form1_Load(object sender, EventArgs e)
    {
        notifyIcon1.BalloonTipText = "Application Minimized.";
        notifyIcon1.BalloonTipTitle = "test";
    }

    private void Form1_Resize(object sender, EventArgs e)
    {
        if (WindowState == FormWindowState.Minimized)
        {
            ShowInTaskbar = false;
            notifyIcon1.Visible = true;
            notifyIcon1.ShowBalloonTip(1000);
        }
    }

    private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
    {
        ShowInTaskbar = true;
        notifyIcon1.Visible = false;
        WindowState = FormWindowState.Normal;
    }

이것은 내 응용 프로그램에서 사용하는 방법이며 간단하고 설명이 필요하지만 귀하의 의견에 대한 답변으로 더 자세한 내용을 알려드립니다.

    public Form1()
    {
        InitializeComponent();

        // When window state changed, trigger state update.
        this.Resize += SetMinimizeState;

        // When tray icon clicked, trigger window state change.       
        systemTrayIcon.Click += ToggleMinimizeState;
    }      

    // Toggle state between Normal and Minimized.
    private void ToggleMinimizeState(object sender, EventArgs e)
    {    
        bool isMinimized = this.WindowState == FormWindowState.Minimized;
        this.WindowState = (isMinimized) ? FormWindowState.Normal : FormWindowState.Minimized;
    }

    // Show/Hide window and tray icon to match window state.
    private void SetMinimizeState(object sender, EventArgs e)
    {    
        bool isMinimized = this.WindowState == FormWindowState.Minimized;

        this.ShowInTaskbar = !isMinimized;           
        systemTrayIcon.Visible = isMinimized;
        if (isMinimized) systemTrayIcon.ShowBalloonTip(500, "Application", "Application minimized to tray.", ToolTipIcon.Info);
    }

시스템 트레이에서 이미지를 클릭하면 프레임이 보이는지 확인할 수 있으며 Visible = true 또는 false로 설정해야합니다.


... 오른쪽 클릭 알림 메뉴의 경우 양식에 컨텍스트 메뉴를 추가하고 편집하고 각 컨텍스트 메뉴 항목을 두 번 클릭하여 마우스 클릭 이벤트를 설정 한 다음 notifyicon 속성에서 ContextMenuStrip을 선택하여 notifyicon1에 연결합니다.


this.WindowState = FormWindowState.Minimized;

참고 URL : https://stackoverflow.com/questions/7625421/minimize-app-to-system-tray

반응형