Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在显示对话框窗口时阻止窗口_C#_.net_Winforms - Fatal编程技术网

C# 如何在显示对话框窗口时阻止窗口

C# 如何在显示对话框窗口时阻止窗口,c#,.net,winforms,C#,.net,Winforms,我有一个表单,我想在异步事件执行期间阻止它。我希望实现一种类似于显示对话框窗口的效果,而不显示或创建对话框窗口 我不想手动禁用表单上的控件,因为将来可能会添加一些控件(我不一定要添加)。我希望避免出于美观原因禁用整个表单/用户控件 是否有一种标准/优雅的方法来实现这一点,或者我走错了方向?您可以通过将WinForm窗口的Enabled属性设置为false来阻止它,但它会阻止用户对该窗口进行任何操作(如移动、调整大小或隐藏),这可能会非常烦人。考虑显示一些负载指示器。< /P> 我不建议在不使控件

我有一个表单,我想在异步事件执行期间阻止它。我希望实现一种类似于显示对话框窗口的效果,而不显示或创建对话框窗口

我不想手动禁用表单上的控件,因为将来可能会添加一些控件(我不一定要添加)。我希望避免出于美观原因禁用整个表单/用户控件


是否有一种标准/优雅的方法来实现这一点,或者我走错了方向?

您可以通过将WinForm窗口的
Enabled
属性设置为
false
来阻止它,但它会阻止用户对该窗口进行任何操作(如移动、调整大小或隐藏),这可能会非常烦人。考虑显示一些负载指示器。< /P> 我不建议在不使控件看起来被禁用的情况下禁用它们,因为这可能会混淆用户

编辑:正如@AvoNappo指出的,窗口行为的不同取决于在何处将
启用
属性设置为
false

  • 如果您在构造函数中设置它,用户仍然可以移动/最小化/关闭窗口

  • 如果在构造函数之后调用它,窗口控制按钮和窗口移动也将被阻止


只需等待异步事件-UI事件(键入等)将排队等待,直到完成。@bensaysnotopolicson您的意思是同步等待吗?在最坏的情况下,事件可能需要几分钟才能完成,因此应用程序可能没有响应。确实,您应该给出一些反馈。显示一个没有任何方法可以取消的模式表单,例如,没有取消或关闭按钮。我打算显示表单本身的反馈。我想我可以使模态窗口不可见。好吧,一个选项是将所有主要控件放在一个面板中,然后将面板设置为enabled=false。另外,还有一个细微的区别,即enabled=false。在表单构造函数中,它似乎禁用了所有子控件,但您仍然可以移动和关闭表单本身。当你把它放在加载处理程序中时,它基本上阻止了所有的东西,所以效果就像弹出了一个模态对话框一样。这似乎使所有的子控件都灰显,而模态窗口控件看起来很正常。但如果找不到更好的办法,我可能不得不求助于此。(“出于美观原因,我希望避免禁用整个表单/用户控件”)@user5226582我添加了第二个选项,该选项在打开模式窗口时使用了与模式窗口相同的方法。很好的一点是,看起来不禁用的非活动控件可能会令人困惑,因此我可能会禁用整个用户控件。谢谢@user5226582很抱歉,这是我的一个错误,这个方法确实在显示模式时调用了,但它不会阻塞窗口,我将搜索另一个解决方案。