【问题标题】:Custom dialog box in C#?C#中的自定义对话框?
【发布时间】:2011-10-18 02:47:10
【问题描述】:

我有一个按钮,当单击它时,会打开一个对话框,上面有各种控件,例如单选按钮和文本框。如果确定,则该对话框中的值将传递回按钮,并使用这些值处理其余代码。如果取消则什么都不做。

我该怎么做?我正在考虑使用这些控件制作另一个表单并让该按钮调用新表单,但我希望其余控件停止,直到表单像对话框一样完成。

【问题讨论】:

    标签: c# winforms dialog


    【解决方案1】:

    1.) 使用所有必要的 UI 元素创建您正在讨论的表单。还要向它添加一个确定和取消按钮。

    2.) 在 OK 和 Cancel 按钮的属性窗格中,将 DialogResult 值分别设置为 OK 和 Cancel。此外,您还可以将 Form 的 CancelButton 属性设置为您创建的 Cancel 按钮的属性。

    3.) 向对话框添加与您要返回的值相对应的附加属性。

    4.) 要显示对话框,请执行以下操作

    using( MyDialog dialog = new MyDialog() )
    {
       DialogResult result = dialog.ShowDialog();
    
       switch (result)
       {
        // put in how you want the various results to be handled
        // if ok, then something like var x = dialog.MyX;
       }
    
    }
    

    【讨论】:

      【解决方案2】:

      你可以这样做。创建一个新表格。在您的主表单中,您可以使用以下方式调用自定义表单:

      CustomForm customForm = new CustomForm();
      customForm.ShowDialog(); 
      

      确保将相关按钮添加到自定义表单并将其 DialogResult 属性设置为 OK、Cancel 或其他任何值。

      【讨论】:

        【解决方案3】:

        在处理对话框的代码中的某处,您还可以显式设置结果。例如,您可以将以下代码放入按钮单击事件处理程序中。

        OnOKButton_Click(object sender, EventArgs e)
        {
            this.DialogResult = DialogResult.OK;
            this.Dispose();
        }
        

        【讨论】:

          【解决方案4】:

          一种方法是在对话表单中创建一个事件。根据您要发回的值的数量,您可以在事件委托中使用参数。更好的方法是为包含要返回的属性列表的参数创建一个小类或结构。

          如果单击“确定”,则使用对话框中的值触发事件。对于取消,事件不会被触发。

          在带有按钮的表单中,您为事件连接了一个处理程序。这会接收您的值,然后您可以随心所欲地使用它们。

          http://msdn.microsoft.com/en-us/library/aa645739(v=vs.71).aspx

          【讨论】:

          • 既然表单可以原生处理,为什么还要通过委托添加大量管道?
          • 没错,但是通常有几种方法可以实现。在这种情况下,有来自对话框、委托和事件等的公共属性。例如。 codeproject.com/KB/cs/pass_data_between_forms.aspx我只是提供了一个替代方案
          • 我可以从离办公室 40 英里的家步行上班。这并不是一个好主意。并非所有想法都是平等创造的;)
          【解决方案5】:
          • 向窗口窗体添加按钮。我通常将按钮命名为 cmdOK 或 cmdCancel

          • 在对话框中定义“取消”和“确定”按钮

          【讨论】:

            猜你喜欢
            • 2014-07-29
            • 1970-01-01
            • 2015-10-16
            • 2013-09-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多