吟空麦子

winform中子窗体的值如何给父窗体

在做winform的开发中,难免会遇到需要使用inputbox的时候,VB.winform中是有系统的inputbox控件,但是在C#.winform中不知道为什么没有了。

相信大家和麦子一样,会想到自己创建一个inputbox的窗体,但是有一个问题产生了:自定义的inputbox如何把值返回给父窗体?

今天麦子也遇到了这个问题,通过朋友的帮助问题解决了,现在分享给大家:

首先,我们要自己创建一个主窗体,然后创建一个名称为Inputbox的窗体(一个文本框,一个确定按钮)。

然后,在主窗体中,通过ShowDialog方法,显示自定义的InputBox,代码如下:

private void btnSign_Click(object sender, EventArgs e)  
{  

    string signTime = lblTime.Text;  

    InputBox inputBox = new InputBox();  

    inputBox.ShowDialog();  

    if (inputBox.DialogResult == DialogResult.OK)  
    {  

        string jobNumber = inputBox.ReturnValue;  

    }  

}

接着,就是Inputbox窗体中的代码:

public string ReturnValue  
{  

      get { return this.txtJobNumber.Text; }  

      set { this.txtJobNumber.Text = value; }  

}  

private void btnOK_Click(object sender, EventArgs e)  
{  

      this.DialogResult = DialogResult.OK;  

      this.Close();  

}

最后给大家说一下原理:主窗体通过showDialog显示子窗体,在子窗体中增加一个ReturnValue的属性(获得子窗体中文本框的值)。

这时可能有人会问,为什么不直接把结果返回给父窗体,那不好意思的告诉你,showDialog只允许返回枚举类型。

因此需要在子窗体关闭之前,将其返回解决设置为DialogResult.OK,供父窗体做出判断。

当然了,如果大家有更好的方法,欢迎一起探讨!

码字很辛苦,转载请注明来自吟空麦子的技术博客《winform中子窗体的值如何给父窗体》 原文链接:https://www.ykmaiz.com/csharp/133.html

评论