为什么Form.Modal属性没有setter?

时间:2018-06-14 05:13:41

标签: c# winforms

我不明白为什么这个属性没有setter。如果你能够设置这个属性会发生什么?

3 个答案:

答案 0 :(得分:1)

来自documentationForm.Modal属性的目的:

  

获取一个值,该值指示此表单是否以模态方式显示。

因此,它只检查表单的模态状态。拥有一个制定者是没有意义的。

要以模态方式打开表单,您应该使用ShowDialog()方法,也如上面链接中所述。这样,当您检查Modal属性时,它将返回true。

如果您的问题是在显示之后是否可以使用模式,答案是,您不能。要了解原因,您需要了解ShowDialog()首先如何制作表单模式。请查看Hans Passant的awesome answer,了解ShowDialog()在技术层面的工作原理

答案 1 :(得分:1)

正如其他人所说,这取决于当前如何使用表单,即。是Show()还是ShowDialog()。在显示表单的同时,它不会让 sense 允许您更改它的模态 1

当表单没有显示时,将它设置为可设置的属性也没有意义,因为重要的是表单的下一次使用是通过Show还是ShowDialog

虽然大多数表单只会以模态或非模态显示 ,但该选项仍然可以在两种方式中使用单个表单。

1 特别是因为当通过ShowDialog以模态方式显示表单时,调用ShowDialog的代码将被阻止,直到它返回结果对话框。如果您在表单已经Show n之后将其更改为模态,那么在返回时没有人等待接收对话框结果。

答案 2 :(得分:0)

  

我不明白为什么这家酒店没有二传手。什么会   如果你能够设置这个属性会发生什么?

它没有设置器,因为一旦显示 Form ,就无法更改其模态样式。虽然微妙的,模态非模态形式在所有者方面表现不同,并且阻止了调用者和其他不太明显的事情。它似乎不值得加入我想象的混乱。

此外,用户必须先与Modal / Dialog窗口进行交互,然后才能返回到父应用程序。这样可以避免在主窗口和设计上中断工作流程。

因此,如果您需要模态表单,请致电ShowDialog()或致电Show()