将标签文本显示为警告信息,并在几秒钟后隐藏它

本文关键字:几秒 隐藏 显示 文本 标签 警告 信息 | 更新日期: 2023-09-27 18:08:34

我有验证用户是否是管理员的按钮。如果当前登录的用户不是管理员,那么标签将显示为警告消息,然后在几秒钟后隐藏。我尝试在警告消息后使用lblWarning.Hide();lblWarning.Dispose();,但问题是,它甚至在显示警告消息之前隐藏了消息。这是我的代码。

private void button6_Click(object sender, EventArgs e)
{
    if (txtLog.Text=="administrator")
    {
        Dialog();
    }
    else
    {
       lblWarning.Text = "This action is for administrator only.";
       lblWarning.Hide();
    }
}

将标签文本显示为警告信息,并在几秒钟后隐藏它

你要用Timer"隐藏"它。你可以这样实现:

var t = new Timer();
t.Interval = 3000; // it will Tick in 3 seconds
t.Tick += (s, e) =>
{
    lblWarning.Hide();
    t.Stop();
};
t.Start();

而不是:

lblWarning.Hide();

所以如果你想让它的可见时间超过3秒,那么就把你想要的时间乘以1000,因为Interval是以毫秒为单位的。

如果你在2020年使用UWP XAML,并且你的msgSaved标签是一个TextBlock,你可以使用下面的代码:

DispatcherTimer timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(2);
msgSaved.Visibility = Visibility.Visible;
timer.Tick += (s, en) => {
        msgSaved.Visibility = Visibility.Collapsed;
        timer.Stop(); // Stop the timer
    };
timer.Start(); // Starts the timer. 

当然你可以直接使用Thread。睡眠

lblWarning.Text = "This action is for administrator only.";
System.Threading.Thread.Sleep(5000);
lblWarning.Hide();

其中5000 =您想要暂停/等待/休眠的毫秒数

下面的解决方案适用于wpf应用程序。当您启动计时器时,将启动一个单独的线程。要从那个线程更新UI,你必须使用分派方法。请阅读代码中的注释并使用相应的代码。要求标题

使用System.Timers;

private void DisplayWarning(String message, int Interval = 3000)
    {
        Timer timer = new Timer();
        timer.Interval = Interval;
        lblWarning.Dispatcher.Invoke(new Action(() => lblWarning.Content = message));
        lblWarning.Dispatcher.Invoke(new Action(() => lblWarning.Visibility = Visibility.Visible));
        // above two line sets the visibility and shows the message and interval elapses hide the visibility of the label. Elapsed will we called after Start() method.
        timer.Elapsed += (s, en) => {
            lblWarning.Dispatcher.Invoke(new Action(() => lblWarning.Visibility = Visibility.Hidden));
            timer.Stop(); // Stop the timer(otherwise keeps on calling)
        };
        timer.Start(); // Starts the timer. 
    }

用法:

DisplayWarning("Warning message"); // from your code

此函数显示标签上特定时间持续时间的特定MSG,包括文本样式

public void show_MSG(string msg, Color color, int d)
    {
        this.Label.Visible = true;
        this.Label.Text = msg;
        this.Label.ForeColor = color;
        Timer timer = new Timer();
        timer.Interval = d;
        timer.Tick += (object sender, EventArgs e) =>
        {
            this.Label.Visible = false;
        }; timer.Start();
    
    }