我正在使用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);
}
}
答案 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);
}
}
}