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

我有一个主窗体(让我们称之为frmHireQuote),它是主MDI窗体(frmMainMDI)的子窗口,当单击一个按钮时,它通过ShowDialog()显示另一个窗体(frmImportContact)。


当用户在frmImportContact上单击“确定”时,我想将一些字符串变量传递回frmHireQuote上的某些文本框。


请注意,可能有多个frmHireQuote实例,显然重要的是我回到调用此frmImportContact实例的实例。


这样做的最佳方法是什么?


蝴蝶刀刀
浏览 1661回答 3
3回答

素胚勾勒不出你

我通常在表单/对话框上创建一个静态方法,我可以调用它。这将返回成功(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   }}

UYOU

发现这个代码的另一个小问题...或者至少当我试图实现它时它是有问题的。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;     }}添加两个按钮值后,对话框工作得很好!谢谢你的例子,它确实有帮助。
打开App,查看更多内容
随时随地看视频慕课网APP