如何在几秒钟后更改标签文本?

时间:2018-09-24 04:34:49

标签: c# winforms

我已经搜索并尝试了许多解决此问题的方法。

对于Visual Studio 2015 WinForma应用程序,我希望#bottonNuevo的文本在时间延迟后更改。

在我的许多方法中,我可以使用Label确认标签的字符串值已更改,但是屏幕UI并未更改。

到目前为止,我已经尝试过:

1:在更改值之前,MessageBox内的Thread.Sleep(number)
结果:在功能结束之前,似乎没有更新UI。

2:各处Public Form1()
结果:什么都不做。

3:使用nameoflabel.refresh();并在计时器的经过函数中更改我的System.Timers的值。
结果:更改Label的值,但在屏幕上看不到。

4:由于涉及按钮单击的所有操作都可以完美地更改标签文本,因此我研究了如何使用Label来模仿按钮单击,并为此制作了一个假按钮。
结果:值发生了变化,但屏幕上仍然没有任何变化。

我开始相信这一定是一个错误。是?没有? 无论如何,这是我需要工作的:

buttonName.preformClick()

2 个答案:

答案 0 :(得分:1)

public void holdone(Object source, ElapsedEventArgs e)
{
     say.Invoke((MethodInvoker)delegate
    {
        say.Text = "new after seconds"; //predicated upon a declared var say = new Label()
    }); 
} 

这是System.Timers.Timer Elapsed事件处理程序的示例,该事件处理程序应(相对)立即影响您的UI。

答案 1 :(得分:1)

您可以改用list comprehension,这将根据需要更新UI:

load['Encoded_Column'] = [encode('password',x) for x in load['F']]
load['Decoded_Column'] = [decode('password', x) for x in load['Encoded_Column']]

print (load)
   A  B  C  D  E  F Encoded_Column Decoded_Column
0  a  4  7  1  5  a           w5E=              a
1  b  5  8  3  3  a           w5E=              a
2  c  4  9  5  6  a           w5E=              a
3  d  5  4  4  9  b           w5I=              b
4  e  5  2  2  2  b           w5I=              b
5  f  4  0  0  4  b           w5I=              b