如何使用c#中的Windows窗体显示非交互式、自动隐藏的通知弹出消息?

如何使用c#中的Windows窗体显示非交互式、自动隐藏的通知弹出消息?,c#,winforms,C#,Winforms,使用Windows窗体,.NET3.5框架,语言:c# 我想显示一个弹出窗口1秒钟,通知用户所执行的操作。例如,当我复制文件X时,我想显示一个通知,如“将文件X复制到文件X-copy”。应该显示一秒钟,然后自动隐藏。您可以使用计时器。您知道,ShowFloating和HideFloating分别执行初始显示和初始显示 public void ShowFloatingForXMilliSeconds(int milliSeconds) { ShowFloating(); if (_

使用Windows窗体,.NET3.5框架,语言:c#
我想显示一个弹出窗口1秒钟,通知用户所执行的操作。例如,当我复制文件X时,我想显示一个通知,如“将文件X复制到文件X-copy”。应该显示一秒钟,然后自动隐藏。

您可以使用计时器。您知道,ShowFloating和HideFloating分别执行初始显示和初始显示

public void ShowFloatingForXMilliSeconds(int milliSeconds) {
    ShowFloating();
    if (_autoOffTimer == null) {
        _autoOffTimer = new System.Timers.Timer();
        _autoOffTimer.Elapsed += OnAutoOffTimerElapsed;
        _autoOffTimer.SynchronizingObject = this;
    }
    _autoOffTimer.Interval = milliSeconds;
    _autoOffTimer.Enabled = true;
}

void OnAutoOffTimerElapsed(Object sender, System.Timers.ElapsedEventArgs ea) {
    if ((_autoOffTimer != null) && _autoOffTimer.Enabled) {
        _autoOffTimer.Enabled = false;
        HideFloating();
    }
}
同时分离计时器处理程序并在dispose中处理计时器。

将帮助您创建最顶层的窗口,而不会从当前活动窗口中窃取焦点

要完成您的解决方案,在简单的情况下,您需要在表单上添加计时器,以确保表单在1秒后自动关闭,并正确定位通知窗口(您可能希望它位于屏幕的右下角?——这是一个简单的算术练习)


对于更高级的解决方案,您应该在那里创建NotificationManager类并管理通知消息表单的生存期。

显示给出的答案。我认为弹出的消息有点不友好。使用状态栏怎么样?虽然我想补充一点,如果你能在你正在使用的gui框架中找到一个控件,它会做你想做的,然后使用它。winforms中没有我们需要的任何东西。可能他正在构建的应用程序很少弹出这些弹出窗口(想到Dropbox),可能主UI不可见,等等……当然,状态栏不能用于所有消息。但是考虑另一种方法有时会更好:)我认为您是对的,使用状态栏是最好的方法,并且符合我正在为其创建外接程序(Visual Studio)的宿主应用程序的行为。谢谢你让我恢复理智:-)