当用户单击任务栏上运行的应用程序图标时发生的事件是什么?

时间:2014-01-15 13:03:56

标签: c#

当我点击任务栏上正在运行最小化的应用程序图标时,是否发生了任何事件?我想在点击图标时调用我的方法。 该方法被编码到应用程序的资源中。请查看图片以获取更多信息:

TaskBar Icon

4 个答案:

答案 0 :(得分:1)

您可以使用来自已激活的事件。

public Form1()
{
     InitializeComponent();
     this.Activated += Form1_Activated;
}

private void Form1_Activated(object sender, EventArgs e)
{
   if (this.WindowState == FormWindowState.Minimized)
   {
      //TODO: take required action here
   }
}

P.S .:我假设您正在寻找winform应用程序的解决方案。

答案 1 :(得分:1)

如果您使用的是WPF,则可以使用Window.StateChanged Event。此事件的定义:

  

当窗口的 WindowState 属性发生变化时发生。

对于WindowsForms,没有StateChanged事件。您必须使用SizeChanged Event并自行检查WindowState。像这样:

private void Form1_Resize(object sender, EventArgs e)
{
    switch(this.WindowState)
    {
        case FormWindowState.Minimized: //Your minimized-event code here;
            break;
        case FormWindowState.Maximized: //Your maximized-event code here;
            break;
        default: //state is 'Normal':
    }
}

答案 2 :(得分:0)

每当窗口最小化,最大化或恢复时,Window.StateChanged事件都会被触发。您可以捕获此事件并调用您的函数。

答案 3 :(得分:0)

如果您想为代码所在的应用程序执行此操作,则可以处理WinForms应用程序的Resize控件的SizeChangedForm事件以及{{1} WPF应用程序的Window控件事件。当用户单击最小化到任务栏的应用程序的任务栏图标时,它将被还原,并且StateChanged(WinForms),Resize(WindForms)和SizeChanged(WPF)事件是提出你可以处理并检查StateChanged是否最大化或正常。

如果您想为任何其他应用程序执行此操作,那么我认为您必须使用WindowState Win32 API函数(如所述here),以便您将获得OS中打开的窗口的集合并且必须遍历所有这些窗口以识别并挂钩他们的SetWindowsHookEx事件。