c# - 在通知区域显示 winform

标签 c# winforms notification-area

我想在系统托盘正上方的右下角显示一个 winform,

我该怎么做?这是我的代码:

public static void Notify()
{        
    Rectangle workingArea = Screen.PrimaryScreen.WorkingArea;
    Form fm = new Form();
    fm.ClientSize = new Size(200, 200);
    int left = workingArea.Width - fm.Width;
    int top = workingArea.Height - fm.Height;
    fm.Location = new Point(left, top);
    fm.ShowInTaskbar = false;
    fm.ShowIcon = false;
    fm.MinimizeBox = false;
    fm.MaximizeBox = false;
    fm.FormBorderStyle = FormBorderStyle.FixedToolWindow;
    fm.Text = "Test";
    fm.TopMost = true;
    fm.Show();
}

最佳答案

我刚刚尝试了这个并且它对我有用(注意:这段代码必须出现在表单第一次显示之后——例如,你可以将它放在表单的 Load 事件处理程序中,或者在对 Show 的任何调用之后简单地包含它):

Rectangle workingArea = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea;
int left = workingArea.Width - this.Width;
int top = workingArea.Height - this.Height;

this.Location = new Point(left, top);

是否使用 WorkingAreaBounds 取决于您所说的“over”是什么意思:如果您的意思是“在前面”,则使用 Bounds,因为它包括覆盖整个屏幕的区域(包括系统托盘占用的空间);如果您的意思是“上方”,则使用 WorkingArea,它只包含用户的桌面。

另外让我澄清一下,您希望在下面显示您的实际表单,对吗?如果你想在通知区域有一个图标,那就是 NotifyIcon组件是为了。

关于c# - 在通知区域显示 winform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3644315/

相关文章:

c# - 如何以编程方式 "unbind"套接字?

c# - 显示气球通知

c# - Rx DelayOnTrue 扩展实现

c# - 如何从复杂的 Json 对象中获取值?

c# - 在保护模式下从 C# 打开 Winword

c# - DataGridView 最右边的列如何填充表单的剩余部分?

c# - 在 WinForm 应用程序中加载表单后禁用 datagridview 中的默认单元格选择

c# - 遍历所有 MDI 子级并关闭除当前窗体之外的所有其他窗体

python - 从弹出菜单中选择项目 win32 api Python

winapi - 尽管正确设置了 szTip,但通知图标工具提示并未显示