有没有办法检查label.text是否有相同的文字5秒钟?我有一个标签,正在改变它在#34; speech"之间的文字。 &安培; "沉默"取决于麦克风是否有任何形状。
例如
if(label.text == "silence" for 5 seconds
{
//do whatever
}
答案 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
,则会运行指定的代码。但是,如果您希望在下次麦克风检测到输入时进行检查,那么这不是可行的方法。