为面板中的动态文本框创建参考

时间:2015-11-14 15:05:25

标签: c#

好的,我会试着问这个而不是听起来很愚蠢。我有一个用户表单,我在面板中创建动态文本框。我想引用这些文本框或其他表单中的面板将texbox数据发送到excel。我需要知道如何引用这些控件。提前谢谢!!

2 个答案:

答案 0 :(得分:0)

在用户控件上创建公共属性,每个元素对应一个要访问的元素。

public class MyControl : UserControl
{
    public string Name
    {
        get { return textBoxName.Text; }
    }

    public string Address
    {
        get { return textBoxAddress.Text; }
    }

    ...

然后使用来自托管用户控件的父控件的那些。

string name = myControl1.Name;
string address = myControl.Address;

答案 1 :(得分:0)

假设您有Form1在加载事件期间向面板TextBox动态添加panel1,如下所示:

private void Form1_Load(object sender, EventArgs e)
{
   panel1.Controls.Add(new TextBox());
}

您要Form2从中panel1访问数据Form2。在panel1上,您可以添加一个公共字段来存储对sourcePanel的引用,但您可以随意调用它。在这种情况下,我使用public partial class Form2 : Form { public Panel sourcePanel; public Form2() { InitializeComponent(); } }

panel1

然后,您可以在创建新实例时将Form2引用传递给任何新的Form1实例,例如private void button1_Click(object sender, EventArgs e) { Form2 f2 = new Form2(); f2.sourcePanel = panel1; f2.Show(); } 上的按钮点击事件:

Form2

然后在private void Form2_Load(object sender, EventArgs e) { foreach (TextBox txt in sourcePanel.Controls.OfType<TextBox>()) { System.Diagnostics.Debug.WriteLine(txt.Text); } } 上,您可以使用以下代码访问TextBoxes中的所有值:

  setLayout(new FlowLayout());