2010-05-27 80 views
1

有没有办法让窗体返回一个值?像...关闭窗体返回值

sub main() 

    Dim task as new TaskForm() 
    dim res as integer=0 
    res = task.opendialog() 

end sub 

回答

1

如果使用ShowDialog,您可以设置窗体的DialogResult prope rty值。请记住,表单不能以此方式返回任意结果,只能使用DialogResult enumeration的值。

否则,您必须设置窗体的Tag属性,并在窗体关闭后,但在放弃对其的引用之前手动检索它。

1

这取决于你想要返回什么。如果你想显示一个对话框,并弄清楚,用于关闭它哪个按钮(确定,取消,......),你可以使用ShowDialog方法,它返回一个值DialogResult显示形式:

DialogResult result = theForm.ShowDialog(); 
if (result == DialogResult.OK) 
{ 
    // OK was clicked 
} 

如果您想返回其他值,最简单的方法是通过表单上的属性公开这个值,或者在表单中提供一个静态方法来创建它的一个实例,收集所需的输入并返回数据:

class NameInputForm : Form 
{ 
    // form initialization/construction left out for brevity, but let's assume 
    // it contains a TextBox control called UserNameTextBox and a button with 
    // its DialogResult property set to OK 

    public static string GetNameFromUser() 
    { 
     using (NameInputForm form = new NameInputForm()) 
     { 
      if (form.ShowDialog() == DialogResult.OK) 
      { 
       return form.UserNameTextBox.Text; 
      } 
     } 
     return ""; 
    } 
}