Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何传递列表<;字符串>;对象从对话框到主窗体?_C#_Winforms - Fatal编程技术网

C# 如何传递列表<;字符串>;对象从对话框到主窗体?

C# 如何传递列表<;字符串>;对象从对话框到主窗体?,c#,winforms,C#,Winforms,我使用ShowDialog()从主窗体调用窗体。我不想从对话框表单中逐个传递值,而是希望传递一个值列表,以便主表单可以使用它们(根据主表单上的选项,对话框表单上的字段数量会有所不同) 但是,这段代码会使我的程序崩溃,但不会引发任何异常。问题一定出在列表上,因为此方法处理简单变量 对话框窗体的类包含以下内容: List<string> valuesToReturn; public List<string> ValuesToReturn { get => ValuesT

我使用ShowDialog()从主窗体调用窗体。我不想从对话框表单中逐个传递值,而是希望传递一个值列表,以便主表单可以使用它们(根据主表单上的选项,对话框表单上的字段数量会有所不同)

但是,这段代码会使我的程序崩溃,但不会引发任何异常。问题一定出在列表上,因为此方法处理简单变量

对话框窗体的类包含以下内容:

List<string> valuesToReturn;
public List<string> ValuesToReturn { get => ValuesToReturn; set => ValuesToReturn = value; }

请帮助我如何更正此代码。谢谢。

使用表格2的
对话框result
值来确定是否需要刷新
表格1
。另外,
HandleList()
方法将填充列表中的所有文本框
.text

Form1
调用
Form2

 private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            if (f2.ShowDialog() == DialogResult.OK)

            {
                // refresh form
               AddItemsFromListInForm2(f2.valuesToReturn);
            } 
        }

 private void AddItemsFromListInForm2(List<string> valuesToReturn)
 {
     // do something with valuesToReturn...
 }   
Form2
上的另一个按钮中,如果您不想刷新Form1,则可以执行该代码:

 private void button2_Click(object sender, EventArgs e)
            {
                this.DialogResult = DialogResult.Cancel;
                this.Close();
            }

查看我的双表单项目:我没有遇到问题,是因为它能够将值从对话框表单传递到主表单,还是您希望通过foreach循环将值添加到valuesToReturn列表?我希望将所有文本框(对话框表单)的文本添加到列表中,然后在主表单中检索该列表。我想访问列表中的元素。有人知道为什么我的代码不起作用吗?我怀疑是列表的访问者造成了这个问题,我搞不清楚“获取列表”和“设置列表”是什么意思,它指的是整个列表还是它的元素。
ValuesToRetun.Add
(带大写的访问器)和
valuesToReturn.Add
(变量本身是私有的)之间有什么区别
 private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            if (f2.ShowDialog() == DialogResult.OK)

            {
                // refresh form
               AddItemsFromListInForm2(f2.valuesToReturn);
            } 
        }

 private void AddItemsFromListInForm2(List<string> valuesToReturn)
 {
     // do something with valuesToReturn...
 }   
  private void button1_Click(object sender, EventArgs e)
        {
            this.DialogResult = DialogResult.OK;
            HandleList();
            this.Close();
        }

   private void HandleList()
   {

        foreach (Control c in this.Controls)
        {
            if(c is TextBox)
            {
                valuesToReturn.Add(c.Text);
            }
        }
   }       
 private void button2_Click(object sender, EventArgs e)
            {
                this.DialogResult = DialogResult.Cancel;
                this.Close();
            }