检查label.text是否有相同的文本x秒数?

时间:2018-02-18 10:02:22

标签: c#

有没有办法检查label.text是否有相同的文字5秒钟?我有一个标签,正在改变它在#34; speech"之间的文字。 &安培; "沉默"取决于麦克风是否有任何形状。

例如

if(label.text == "silence" for 5 seconds 
{
//do whatever 
}

1 个答案:

答案 0 :(得分:0)

根据何时要检查此项,一种解决方案是使用间隔为5000毫秒(5秒)的Timer与标签的TextChanged事件相结合。每次抬起TextChanged时,都会重新启动计时器,等待另外5秒钟。

假设这是WinForms:

System.Windows.Forms.Timer labelTimer = new System.Windows.Forms.Timer() {Interval = 5000};

//You need to attach the Load event handler to your form via the Property Window.
private void Form1_Load(object sender, EventArgs e)
{
    label1.TextChanged += label1_TextChanged;
    labelTimer.Tick += labelTimer_Tick;
}

private void label1_TextChanged(object sender, EventArgs e)
{
    //Restart timer.
    labelTimer.Stop();
    labelTimer.Start();
}

private void labelTimer_Tick(object sender, EventArgs e)
{
    if(label1.Text == "silence") {
        //label1 has had the text "silence" for 5 seconds. Do something.
        labelTimer.Stop(); //Wait until the next text change.
    }
}

如果标签在 5秒后仍然具有文本silence ,则会运行指定的代码。但是,如果您希望在下次麦克风检测到输入时进行检查,那么这不是可行的方法。