我想要我的程序的这一部分(我在代码中用“//”符号显示),等到按钮3被点击恢复。
private void button2_Click(object sender, EventArgs e)
{
if (this.textBox3.Text != "")
{
this.listView1.Items.Clear();
//this.listView1.Items.Add(this.textBox3.text);
}
}
答案 0 :(得分:1)
好像你想要这样的东西:
private void button2_Click(object sender, EventArgs e)
{
if (this.textBox3.Text != "")
{
this.listView1.Items.Clear();
button3.Click += Function;
}
}
private void Function(object sender, EventArgs e)
{
this.listView1.Items.Add(this.textBox3.text);
button3.Click -= Function;
}
答案 1 :(得分:1)
因此,我们将从这个帮助器方法开始,该方法生成一个在单击按钮时将完成的任务:
public static Task WhenClicked(this Button button)
{
var tcs = new TaskCompletionSource<bool>();
EventHandler handler = null;
handler = (sender , args) =>
{
tcs.SetResult(true);
button.Click -= handler;
};
button.Click += handler;
return tcs.Task;
}
使用它和C#5.0中的await
,我们可以创建与您请求的内容类似的代码,即使它产生的代码与其他答案类似(因此保持异步并且不阻止UI)线程)。
private async void button2_Click(object sender, EventArgs e)
{
if (this.textBox3.Text != "")
{
this.listView1.Items.Clear();
await button3.WhenClicked();
this.listView1.Items.Add(this.textBox3.text);
}
}