繁体   English   中英

c#winform编程

[英]c# winform programming

我有两种形式; 一个叫做“胜利”,另一个叫做“失败”。 “赢”表单上有一个按钮,显示“丢失”表单。 单击此按钮时,两个表单都可见。 当我关闭'丢失'表单然后再次单击'win'表单上的按钮时,我得到以下异常:

An unhandled exception has occured: Unable to access a disposed object ..object :form

请有人指出我正确的方向,所以我可以解决这个问题吗?

这是因为你的“损失”形式已经关闭并且已被处理掉,所以它不能再被使用了。 您需要创建表单的新实例,如此(不知道您的代码看起来如何):

this.loss = new LossForm(); 
this.loss.Show();

在引用表单之前,您可以验证表单的IsDisposed属性。

例如'win'表单上的按钮点击处理程序:

if (loss.IsDisposed)
  return;

// do stuff with loss form

更新:我认为最好不要在表单之间共享控制权。

  1. 您可以将“丢失”表单作为Dialog运行。 在对话框关闭后读取所有需要的属性。
  2. 您可以订阅“损失”表单事件并以“赢”形式处理它们。

这不是一个非常好的模型,但你可以挂钩到formClosing事件,取消它然后隐藏表单。 这意味着表格不会自动处理,你可以再次打电话给show。

花一些时间来研究MVC架构 - 它起初看起来很复杂,但它确实有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM