![]() |
1
8
我知道这是一个古老的问题,但似乎没有人发表过这样的回答。
你说你打电话来
参见备注部分: http://msdn.microsoft.com/en-us/library/system.windows.forms.form.close.aspx
如果您想再次显示表单。使用
希望这能帮助其他寻找灵魂的人。 伙计们,不要停止搜索“我不知道为什么它有时会起作用”。这就变成了一个有很多防御性的bug软件,“我会再次调用这个方法,以防万一”之类的东西。不好的。 |
![]() |
2
25
最好的方法是:
这是最简单的方法,您不会得到objectDisposedException |
![]() |
3
5
好吧,我不想回答我自己的问题,但这让我发疯,这是我见过的最难复制的虫子之一。 在我的窗体上,我将覆盖onformLoad和onformClose方法,在这里我将窗体的大小、位置和窗口状态保存到/从注册表中恢复。我取出了这个代码,它解决了这个问题。奇怪的是,我把它放回原处,问题却没有回来。 我最终重现了这个问题:您必须让表单完全打开,最大化它,然后关闭它,这样最大化的状态就保存到注册表中。然后当您再次打开它时,它会将其设置为最大化,如果它在加载处理程序中关闭,它会在关闭时尝试访问大小/位置。显然,在onformClosing方法中访问这些值会导致窗体在且仅在窗体被最大化时尝试聚焦,这是非法的,因为窗体已被释放。 因此,基本上,如果表单将从其加载事件调用Close,则无法访问表单的onformClosing方法中的表单显示属性。(除非先检查释放的属性) 我知道Winforms智慧中相当具体的一部分,但我还是写下来了。 |
![]() |
4
4
如果您想关闭一个表单,就像用户按了右上角的十字(通常意味着取消),只需添加以下代码。
这也适用于表单加载功能:
如果不希望窗体在短时间内可见,请将Visible属性设置为false(例如在设计器或构造函数中),并在确定程序可以继续加载时将其设置为true。 |
![]() |
5
3
在加载事件中,关闭窗体不是一个好主意。在激活事件之后执行。 |
![]() |
6
1
一种可能性: 它们可能在此窗体上有一个计时器,该计时器正在其FormLoad事件中初始化和启用。如果计时器试图在窗体被激发时访问它,则在窗体关闭之前,也需要禁用和停止计时器。 我以前见过这样的表格… |
![]() |
7
0
在我看来,在没有仔细观察的情况下,实现所需功能的最干净的方法可能是创建一个从
也就是说,我不知道为什么它有时会起作用,而不是有时。 |
![]() |
8
0
是否尝试单步执行.NET代码以查看发生异常时正在调用哪一行代码?如果您有vs 2008,可以通过转到“工具”-->选项”->调试并选择“启用.NET框架源代码步进”来实现。请注意,下载所有必需的文件可能需要一段时间,但这样您就可以进入form.show()并查看到底发生了什么。 |
![]() |
9
0
好吧,结果发现它比我想象的要简单一些,更通用一些,但是仍然很奇怪,很模糊。 如果您像我们一样在窗体加载/关闭时保存/加载窗体大小/位置/窗口状态,则必须确保onload方法首先调用base.onload,以便触发窗体加载事件处理程序,然后设置属性。不这样做只会在窗体从Load方法内部调用Close时导致问题。完成窗体关闭事件后,您将在Show调用上获得一个ObjectDisposedException。 我头痛。 |
![]() |
10
0
form.shown()也是诀窍。 |
![]() |
11
0
据我所知,设置窗体的DialogResult将关闭窗体-可能必须不是DialogResult.None。(即,您不需要调用form.close()方法)。 部分问题是,如果在代码的其他地方,您正在访问表单的属性或其中的控件,这可能会阻止表单关闭。 如有人建议,最好是你有一处房产,例如
以您在初始化代码中设置的形式。在加载表单后的一个后续事件中,您将询问此问题并关闭该表单(如果它是假的)。 也许有人能推荐最好的活动来做这件事?? |
![]() |
JOO · 使用udpClient从多个IP地址连续接收数据 2 年前 |
![]() |
Futterkiste · 函数比例图 2 年前 |
![]() |
user18789895 · 我应该如何验证WinForms应用程序? 2 年前 |
![]() |
beriscen · 如何使整个链接标签区域可点击? 2 年前 |
![]() |
lpmaxim · 当鼠标光标悬停在按钮上时,背景图像会移动 2 年前 |