我对我要问的问题有现实的需求,但为了简单起见,我将问题归结为这一点。
- 创建 C# windows 窗体应用程序项目
- 在表单中添加一个文本框和一个按钮。
- 向文本框添加离开事件。
- 将 Click 事件添加到按钮。
使用此代码
private void textBox1_Leave(object sender, EventArgs e) {
button1.Dispose();
}
private void button1_Click(object sender, EventArgs e) {
MessageBox.Show("in button 1");
}
运行项目并将光标放在文本框中。现在点击按钮离开。
通过离开文本框会导致按钮被释放,但按钮的 Click 事件位于文本框的 Leave 事件后面等待处理。但是没有文本框了,所以你得到了 ObjectDisposedException。
所以,....问题是我如何消除排队事件,以便我可以安全地处理按钮。