C#主窗体未识别新窗体返回值

C#主窗体未识别新窗体返回值,c#,.net,forms,variables,toolstrip,C#,.net,Forms,Variables,Toolstrip,我通过Toolstrip打开一个额外的表单,输入Mainform中需要的用户名(在Mainform中声明为字符串) 主表格代码: private void toolStripButton6_Click(object sender, EventArgs e) { using (Form frm = new Form3()) { frm.FormBorderStyle = FormBorderStyle.FixedDialog;

我通过Toolstrip打开一个额外的表单,输入Mainform中需要的用户名(在Mainform中声明为字符串)

主表格代码:

private void toolStripButton6_Click(object sender, EventArgs e)
    {
        using (Form frm = new Form3())
        {
            frm.FormBorderStyle = FormBorderStyle.FixedDialog;
            frm.StartPosition = FormStartPosition.CenterParent;

            if (frm.ShowDialog() == DialogResult.OK)
            {
                Username = frm.ReturnValue1;
            }
        }
    }
表格3的代码:

    public string ReturnValue1 { 
        get
        {
            return textBox1.Text;
        }
    } 
    private void button1_Click(object sender, EventArgs e)
    {
        this.Close();
    }

C#告诉我没有frm.ReturnValue1:(

您已将表单声明为type
form
而不是
Form3

using (Form frm = new Form3())
由于类
Form
没有属性
ReturnValue1
,因此会出现错误。这是因为
Form3
Form
的子类,因此可以将其分配给
Form
类型的变量,而无需任何强制转换。如果使用该属性,则编译器将不得不使用另一种方法你需要一个演员

您的代码应该是:

using (Form3 frm = new Form3())
或者甚至(我的偏好):


然后它将始终是正确的类型,如果您决定将来使用不同的表单,您不必记住在两个地方更改类名。

您已将表单声明为type
form
而不是
Form3

using (Form frm = new Form3())
由于类
Form
没有属性
ReturnValue1
,因此会出现错误。这是因为
Form3
Form
的子类,因此可以将其分配给
Form
类型的变量,而无需任何强制转换。如果使用该属性,则编译器将不得不使用另一种方法你需要一个演员

您的代码应该是:

using (Form3 frm = new Form3())
或者甚至(我的偏好):


然后它将始终是正确的类型,如果您决定将来使用不同的表单,您不必记住在两处更改类名。

并且不要将表单命名为“Form1”、“Form2”和“Form3”。那么“MainForm”或“EmployeeAddEdit form”如何,一些有意义的东西。@granadaCoder-嗯,是的,但我在这里使用的是与OP相同的名称。对不起,我是与OP交谈的,而不是您。我想他/她会用有意义的名称“看到”前面的错误。@granadaCoder-很可能。并且不要将您的表单命名为“Form1”、“Form2”和“Form3”。那么“main form”或“EmployeeAddEditForm”呢,一些有意义的东西。@granadaCoder-是的,但我在这里使用的是与OP相同的名称。对不起,我是在和OP说话,而不是你。我想他/她会在前面用有意义的名称“看到”错误。@granadaCoder-很可能。