C# 创建通知图标窗体

C# 创建通知图标窗体,c#,winforms,notifyicon,notification-area,C#,Winforms,Notifyicon,Notification Area,我是C#的新手,但我坚持了下来,并开始了我的第一个合适的计划。该程序由通知区域中存在的通知图标组成,单击该图标后,表单将显示一小段时间 到目前为止,我已经启动了该程序(没有显示表单(它是一个固定的单体,因此只显示为灰色框),但创建了图标),并注册了MouseClick事件,但这就是我被卡住的地方。我试图得到它,这样当点击图标时,框会出现在通知区域的上方/旁边(直到模糊事件发生,或表单上某个对象的事件发生),但在谷歌搜索了半个小时左右后,我没有找到解决方案,可能是因为我不知道正确的单词 那么,有人

我是C#的新手,但我坚持了下来,并开始了我的第一个合适的计划。该程序由通知区域中存在的
通知图标
组成,单击该图标后,表单将显示一小段时间

到目前为止,我已经启动了该程序(没有显示表单(它是一个固定的单体,因此只显示为灰色框),但创建了图标),并注册了
MouseClick
事件,但这就是我被卡住的地方。我试图得到它,这样当点击图标时,框会出现在通知区域的上方/旁边(直到模糊事件发生,或表单上某个对象的事件发生),但在谷歌搜索了半个小时左右后,我没有找到解决方案,可能是因为我不知道正确的单词

那么,有人知道需要发送什么命令才能使表单立即显示在正确的坐标(相对于通知区域)中吗

附加的

我已将静态void Main()修改为以下内容:

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
new frmMain();
Application.Run();
因此,
new frmMain()
作为自己的实体存在,而不是作为
Application.Run()的参数存在

编辑

好的,我刚刚发现我可以用
this.Show()
显示表单,这显示表单,反之
this.Hide()
将隐藏表单。但我仍然无法确定通知区域的坐标,以及如何计算表单的新坐标,以便在其旁边/上方显示它。

您可以使用:



  • 每当单击通知图标时,都需要调用上述代码。

    此处的答案是否有帮助?(请注意Hans Passant的回答)我在这个确切的时刻回答了这个确切的问题,我正在摆弄设置,但是表单总是会出现在屏幕的右下角。那么,有没有一种方法可以检测任务栏的位置,这样我就可以添加一个修饰符来选择将任务栏分配到哪个角?查找任务栏的位置并不简单,但这里有一个帖子()。未测试,但您可以在
    NotifyIcon的
    click事件处理程序中获取鼠标位置,并将窗口放置在该位置附近。
    System.Drawing.Rectangle workingRectangle = Screen.PrimaryScreen.WorkingArea;
    this.Left = workingRectangle.Width - this.Width;
    this.Top = workingRectangle.Height - this.Height;
    this.Show();