【问题标题】:DialogResult.OK as an integer in Windows Forms [closed]DialogResult.OK 作为 Windows 窗体中的整数 [关闭]
【发布时间】:2015-12-30 22:15:15
【问题描述】:

是否有一个等效于System.Windows.Forms.DialogResult.OK 的整数,而不是我必须为 1 行代码引用 Windows 窗体库?

这样我就可以写(例如):

if(form.ShowDialog() == 6)

代替:

if(form.ShowDialog() == System.Windows.Forms.DialogResult.OK)

【问题讨论】:

  • 那么你用的是什么表格?对话框结果是匹配到windows窗体窗体
  • 要使用ShowDialog,您必须引用System.Windows.Forms。该程序集已被引用,因此只需添加 using System.Windows.Forms 的 using 语句并与 DialogResult.OK 进行比较。
  • 回到那些神奇的数字不会赢得任何编码奖。您可以自己查找:MessageBox.Show(Convert.ToInt32(DialogResult.OK).ToString()); 您也可以忽略System.Windows.Forms 部分,因为您显然已经有了参考。就是form.ShowDialog() == DialogResult.OK
  • 这毫无意义。
  • 你在做form.ShowDialog()时如何避开图书馆?

标签: c# winforms


【解决方案1】:

通常最好避免在整数和枚举常量之间进行强制转换。

IMO,规范形式是最好的:

using System.Windows.Forms;
....
if(form.ShowDialog() == DialogResult.OK)

无论如何,如果不希望,您可以考虑使用using alias directive 制作别名。像这样的:

using Res = System.Windows.Forms.DialogResult;
....
if(form.ShowDialog() == Res.OK)

附:是的,如果你真的想要,你可以投射:

if((int)form.ShowDialog() == 1)

【讨论】:

    【解决方案2】:

    这不是对您问题的直接回答,但我希望更多地解释您正在尝试解决一个不存在的问题。

    来自the specification

    使用指令有助于使用其他命名空间中定义的命名空间和类型。使用指令会影响命名空间或类型名称(第 3.8 节)和简单名称(第 7.5.2 节)的名称解析过程,但与声明不同,使用指令 不会为使用它们的编译单元或命名空间。

    (强调我的)

    换句话说,您需要的 using 语句实际上不会以任何方式阻碍您。您并没有像使用其他语言(如 Python)那样完全包含整个包。

    作为记录,在 python 中,有一种比整个包更好的方法来引用资源,但这无关紧要

    【讨论】:

      【解决方案3】:
      猜你喜欢
      • 1970-01-01
      • 2021-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多