2011-08-02 47 views
8

我有一个按钮,单击时,会打开一个对话框,其上有各种控件,如单选按钮和文本框。如果确定,那么该对话框中的值将被传回到按钮,其余代码将使用这些值进行处理。如果取消,则什么也不做。C#中的自定义对话框?

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

回答

31

1)创建你在谈论的所有neccessary UI元素的形式。同时添加一个确定和取消按钮。

2.)在“确定”和“取消”按钮的属性窗格中,分别将DialogResult值设置为“确定”和“取消”。此外,您还可以将表单的CancelButton属性设置为您创建的“取消”按钮的属性。

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; 
    } 

} 
0

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

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

在带按钮的窗体中,为事件挂钩了一个处理程序。这会收到你的价值观,然后你可以随你做任何事情。

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

+1

为什么通过增添了不少水暖代表什么时候这是表单可以处理的东西? – dotnetnate

+0

诚然,通常有几种方法可以实现。在这种情况下,对话框,委托和事件等都有公共属性。例如。 http://www.codeproject.com/KB/cs/pass_data_between_forms.aspx我只是替代 – ScruffyDuck

+0

我可以走路去我家40英里远的办公室工作。这并不是一个好主意。并非所有想法都是平等创造的;) – dotnetnate

4

线的东西。创建一个新表单。从你的主要形式,你可以使用调用自定义表单:

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

确保您添加相关的按钮,自定义表单和他们的DialogResult属性设置为OK,取消或其他任何东西。

1

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

OnOKButton_Click(object sender, EventArgs e) 
{ 
    this.DialogResult = DialogResult.OK; 
    this.Dispose(); 
} 
0
  • 按钮添加到Windows窗体。我通常命名按钮为任一按钮cmdOK或cmdCancel

enter image description here

  • 定义取消,并在对话框的形式确定按钮

enter image description here