无法将类型为“System.Windows.Forms.Button”的对象强制转换为“ControlCollection”类型

时间:2014-07-30 10:39:03

标签: c# winforms visual-studio-2012

我正在使用C#设计一个Windows应用程序,我已经动态创建了2个Textboxes,5个Comboboxes和1个NumericUpDown。我希望使用3层架构将所有值保存在数据库中,但我遇到了一个未解决的令人沮丧的问题。我使用了Control Collection,这样我就可以了解每个控件的值。我采用这种方法是对的吗?其次,当我试图在消息框中获取我的文本框的值时,它抛出一个异常“无法将'System.Windows.Forms.Button'的对象强制转换为'ControlCollection'我的代码:

ArrayList list = new ArrayList(this.Controls);
foreach (ControlCollection ctrl in list)
{
    if(ctrl is TextBox)
    {
        MessageBox.Show(ctrl[2].Text);
    }
}

1 个答案:

答案 0 :(得分:2)

尝试以下测试和工作示例代码

    public Form1()
    {
        InitializeComponent();

        TextBox tb = new TextBox();
        tb.Name = "aa";
        tb.Text = "11";

        TextBox tb2 = new TextBox();
        tb2.Name = "bb";
        tb2.Text = "22";
        this.Controls.Add(tb);
        this.Controls.Add(tb2);

    }
    private void button1_Click(object sender, EventArgs e)
    {
        foreach (Control c in this.Controls)
        {
            if (c is TextBox)
            {
                if (c.Name.Equals("bb")) 
                    MessageBox.Show("bb value:" + c.Text);
            }
        }
    }