为了账号安全,请及时绑定邮箱和手机立即绑定

如何从C#中的Form返回一个值?

如何从C#中的Form返回一个值?

蝴蝶刀刀 2019-08-30 15:32:10
我有一个主窗体(让我们称之为frmHireQuote),它是主MDI窗体(frmMainMDI)的子窗口,当单击一个按钮时,它通过ShowDialog()显示另一个窗体(frmImportContact)。当用户在frmImportContact上单击“确定”时,我想将一些字符串变量传递回frmHireQuote上的某些文本框。请注意,可能有多个frmHireQuote实例,显然重要的是我回到调用此frmImportContact实例的实例。这样做的最佳方法是什么?
查看完整描述

3 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

我通常在表单/对话框上创建一个静态方法,我可以调用它。这将返回成功(OK按钮)或失败,以及需要填写的值。


 public class ResultFromFrmMain {

     public DialogResult Result { get; set; }

     public string Field1 { get; set; }



 }

并在表格上:


public static ResultFromFrmMain Execute() {

     using (var f = new frmMain()) {

          var result = new ResultFromFrmMain();

          result.Result = f.ShowDialog();

          if (result.Result == DialogResult.OK) {

             // fill other values

          }

          return result;

     }

}

打电话给你的表格;


public void MyEventToCallForm() {

   var result = frmMain.Execute();

   if (result.Result == DialogResult.OK) {

       myTextBox.Text = result.Field1; // or something like that

   }

}


查看完整回答
反对 回复 2019-08-30
?
UYOU

TA贡献1878条经验 获得超4个赞

发现这个代码的另一个小问题...或者至少当我试图实现它时它是有问题的。


frmMain中的按钮没有返回兼容值,使用VS2010我添加了以下内容,一切开始正常。


public static ResultFromFrmMain Execute() {

     using (var f = new frmMain()) {


          f.buttonOK.DialogResult = DialogResult.OK;

          f.buttonCancel.DialogResult = DialogResult.Cancel;


          var result = new ResultFromFrmMain();

          result.Result = f.ShowDialog();


          if (result.Result == DialogResult.OK) {

             // fill other values

          }

          return result;

     }

}

添加两个按钮值后,对话框工作得很好!谢谢你的例子,它确实有帮助。


查看完整回答
反对 回复 2019-08-30
  • 3 回答
  • 0 关注
  • 1659 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信