C# 从子窗体传回数据时出现问题

C# 从子窗体传回数据时出现问题,c#,winforms,C#,Winforms,我遇到了这个问题: private void loadStringToolStripMenuItem_Click(object sender, EventArgs e) { StringLoader frmStringLoader = new StringLoader(); string test = frmStringLoader.Result; frmStringLoader.ShowDialog();

我遇到了这个问题:

private void loadStringToolStripMenuItem_Click(object sender, EventArgs e)
        {
            StringLoader frmStringLoader = new StringLoader();
            string test = frmStringLoader.Result;
            frmStringLoader.ShowDialog();
            MessageBox.Show(test.ToString());
        }
以及StringLoader表单:

 public partial class StringLoader : Form
    {

        private string result;
        public StringLoader()
        {
            InitializeComponent();
        }

        public string Result
        {
            get { return result; }
        }

        private void btnLoadString_Click(object sender, EventArgs e)
        {
            if ((txtString.Text != string.Empty))
            {
                result = txtString.Text;
            }
            this.Close();
        }
    }
}
这件事给了我一个nullReferenceException(我知道)

怎么处理这件事?我只想打开一个表单,写一个文本,然后单击一个按钮将数据发送回调用者并关闭表单


谢谢。

您正在对话框打开前设置结果。尝试反转两行代码,使其如下所示:

        frmStringLoader.ShowDialog();
        string test = frmStringLoader.Result;

您正在对话框打开前设置结果。尝试反转两行代码,使其如下所示:

        frmStringLoader.ShowDialog();
        string test = frmStringLoader.Result;

在显示表单之前,您正在获取结果!试一试

private void loadStringToolStripMenuItem_Click(object sender, EventArgs e)
    {
        StringLoader frmStringLoader = new StringLoader();
        frmStringLoader.ShowDialog();
        string test = frmStringLoader.Result;
        MessageBox.Show(test.ToString());
    }

在显示表单之前,您正在获取结果!试一试

private void loadStringToolStripMenuItem_Click(object sender, EventArgs e)
    {
        StringLoader frmStringLoader = new StringLoader();
        frmStringLoader.ShowDialog();
        string test = frmStringLoader.Result;
        MessageBox.Show(test.ToString());
    }

您可能还需要检查frmStringLoader.ShowDialog()的DialogResult,这样,如果用户按“取消”,您就不会读取frmStringLoader.Result字符串。您可能还需要检查frmStringLoader.ShowDialog()的DialogResult,这样,如果用户按cancel,您就不会读取frmStringLoader.Result字符串。我简直不敢相信。我曾经认为,如果我点击子表单中的OK按钮,数据将无法通过。但这件事非常简单。为什么我以前没试过?。谢谢你们(你们两个)的帮助。这让我想到了一件事:为什么绳子能帮上她的忙?当我点击Ok按钮时,它会关闭表单,不是吗?那么为什么要传递数据呢?我不知道我是否正确理解了你的问题。你是在问为什么在显示对话框之前可以访问frmStringLoader.Result吗?我简直不敢相信。我曾经认为,如果我点击子表单中的OK按钮,数据将无法通过。但这件事非常简单。为什么我以前没试过?。谢谢你们(你们两个)的帮助。这让我想到了一件事:为什么绳子能帮上她的忙?当我点击Ok按钮时,它会关闭表单,不是吗?那么为什么要传递数据呢?我不知道我是否正确理解了你的问题。您是否在询问为什么可以在显示对话框之前访问frmStringLoader.Result?