在现有的winform上创建新类,并访问文本框

时间:2016-11-01 07:18:40

标签: c#

我创建了一个winform(使用设计器VS2016),它有一些方法和事件(按钮点击)来分析数据。
我有四种不同的方法来分析同一个数据集,我的winform目前包含其中一个,并且工作正常。它比预期的要长,在走得更远之前我想组织得更好,所以我添加了一个课程:

namespace Analysis1
{
  public partial class Form1:Form
    private struct DataStruct
    public Form1()
    public void button1_Click //opens the data source and calls methods      
    public class Analyse1:Form1
}

但是,我的新类Analyse1中没有任何表单文本框可用(它们设置为“”)。我已经阅读了很多线程(example),似乎暗示我需要初始化表单上的每个文本框以在另一个类中使用。

只有一种形式,有没有办法将表单中的所有文本框值调用到新类中而不是一个一个地去?它们都是用户输入,我只需要值,文本框没有任何事件

感谢

编辑:用户将在表单上输入大量文本框数据。根据他们点击的按钮,它将对数据进行不同类型的分析(并返回不同的图表和表格)。我只是想能够访问 textbox1.Text(等等,大约120个文本框) 来自每个分析类

1 个答案:

答案 0 :(得分:1)

有许多方法可以做到这一点,可能最简单的方法是在各种文本框中使用tag属性,例如Class1Class2等等。然后在Form1中公开一个属性,如此;

public List<string> Class1Data
{
    get 
    {
        List<string> result = new List<string>();
        foreach (Button btn in Controls.OfType<Button>())
        {
            if (btn.Tag.ToString().Equals("Class1"))
                result.Add(btn.Text);
        }
        return result; 
    }
}

这应该可以从Analyse1访问它们。

对于那些喜欢简洁,干净的代码的人;

public List<string> Class1Data
{
    get 
    {
        return Controls.OfType<Button>().Where(b => b.Tag.ToString().Equals("Class1")).Select(b => b.Text).ToList();
    }
}