我有一些按钮可以验证用户是否是管理员。如果用户当前登录不是管理员,则标签将显示为警告消息,然后在几秒钟后隐藏。我在警告消息后尝试使用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();
}
}
答案 0 :(得分:26)
你想要用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
是以毫秒为单位。
答案 1 :(得分:1)
当然你可以使用Thread.Sleep
lblWarning.Text = "This action is for administrator only.";
System.Threading.Thread.Sleep(5000);
lblWarning.Hide();
其中5000 =您要暂停/等待/睡眠的毫秒数
答案 2 :(得分:0)
以下解决方案适用于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
答案 3 :(得分:0)
如果您在2020年使用UWP XAML并且msgSaved标签是TextBlock,则可以使用以下代码:
seq
答案 4 :(得分:0)
此功能在标签上显示特定时间段的特定信息,包括文本样式
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();
}