在winforms中使标签可见5秒

时间:2018-06-14 11:30:46

标签: c# winforms timer label

我正在Visual Studio 2017中创建一个WinForms应用程序。

我有一个登录表单,如果用户输入了错误的用户名或密码,则属性为visible = false的标签会在5秒内显示,然后返回显示不可见。

我试过这样的事情:

label3.Visible = true;
Thread.Sleep(3000);
label3.Visible = false;

显然,这不起作用,我无法在网上找到任何有类似问题的人,所以我希望你可以帮我解决这个问题。

我见过其他解决方案:

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

但是我收到一条错误说“在此范围内无法声明名为'e'的本地或参数,因为该名称用于封闭的本地范围以定义本地参数”。

2 个答案:

答案 0 :(得分:2)

e重命名为其他变量,因为错误显示您已在范围内拥有名为e的局部变量。

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

答案 1 :(得分:2)

如果您使用的是.NET Framework 4.5或更高版本,您也可以使用以下代码完成此操作:

label3.Visible = true;
System.Threading.Tasks.Task.Delay(3000).ContinueWith(_ =>
{
    Invoke(new MethodInvoker(()=> { label3.Visible = false; }));
});