【问题标题】:C#: How do you send OK or Cancel return messages of dialogs when not using buttons?C#:不使用按钮时如何发送对话框的 OK 或 Cancel 返回消息?
【发布时间】:2009-03-01 17:03:01
【问题描述】:

C#:不使用按钮时如何发送对话框的 OK 或 Cancel 返回消息?

当用户按下 Enter 时,您将如何在文本框的条件下返回 OK 消息,当用户按下 Ctrl+Q 时将发送 Cancel?

无视: 解决方案 - this.dialogresult = dialogresult.ok 或 dialogresult.cancel。

【问题讨论】:

    标签: c#


    【解决方案1】:

    设置表单的DialogResult:

    this.DialogResult = DialogResult.OK;
    this.Close();
    

    这将导致任何使用ShowDialog() 打开此表单的开启者得到给定的DialogResult 作为结果。

    【讨论】:

    • 如果我没记错的话,设置DialogResult会自动关闭窗口,所以第二条语句是多余的。
    • 你错了。表单实际上是隐藏而不是关闭“当用户单击对话框的关闭按钮或设置DialogResult属性的值时,不会自动调用Close方法。相反,表单被隐藏并且可以再次显示而无需创建新的对话框的实例。由于这种行为,当您的应用程序不再需要该表单时,您必须调用该表单的 Dispose 方法。 -- 来自 MSDN (msdn.microsoft.com/en-us/library/…)
    • @configurator - 用户控件呢?你如何让它设置表单(持有它) dialogResult (显然不使用 this.Parent.DialogResult ...
    • @ephraim 你需要以某种方式访问​​表单,所以我猜FindForm?
    【解决方案2】:

    直接,在按钮本身的属性中,有DialogResult属性可以设置为OK/Cancel/Yes/No/等...正如其他人所说,这个也可以通过编程来设置。

    在按钮所在表单的属性中,将 AcceptButton 属性设置为您的按钮。这也会做一些事情,比如当你按下回车键时触发按钮,并突出显示按钮。

    【讨论】:

      【解决方案3】:

      我假设您使用的是 Windows 窗体...

      几种方法。

      对于 OK - 将表单上的 AcceptButton 设置为 OK 按钮。 对于取消 - 将表单上的 Cancelbutton 设置为取消按钮。

      或者,您可以手动将表单 DialogResult 设置为 DialogResult.OK 或 DialogResult.Cancel,然后以编程方式关闭表单。

      【讨论】:

      • 我没有使用确定或取消按钮。如果我想在用户在文本框中按 Enter 时结束 Accept 返回,而在用户在文本框中按 ESC 时结束返回 Cancel 怎么办?
      • 有一个名为 CancelButton 的表单属性,它在按下 esc 时激活。 VS2005 只允许我将它分配给一个真正的按钮。我的解决方案是创建一个真正的按钮并将其 x 坐标设置为负 500。
      • 不是AcceptButton而不是DefaultButton吗?
      • @IneedHelp:谢谢。相应地进行了编辑。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      相关资源
      最近更新 更多