C#中的自定义对话框?

时间:2011-08-02 09:46:43

标签: c# winforms dialog

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

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

5 个答案:

答案 0 :(得分:31)

1。)使用所有必要的UI元素创建您正在讨论的表单。还要为其添加“确定”和“取消”按钮。

2.。)在“确定”和“取消”按钮的属性窗格中,将DialogResult值分别设置为“确定”和“取消”。此外,您还可以将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;
   }

}

答案 1 :(得分:4)

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

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

确保将相关按钮添加到自定义表单并将其DialogResult属性设置为“确定”,“取消”或其他任何内容。

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

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

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

在带有按钮的表单中,您可以为事件挂钩处理程序。这会收到您的价值观,然后您可以随意使用它们。

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

答案 4 :(得分:0)

  • 向Windows窗体添加按钮。我通常将按钮命名为cmdOK或cmdCancel

enter image description here

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

enter image description here