0

クリックするとテキストボックスが動的に作成されるボタンがあります。

        for (int i = 0; i < length; i++)
        {
         Name.Add(new TextBox());
         System.Drawing.Point locate = new System.Drawing.Point(137, 158 + i * 25);
         (Name[i] as TextBox).Location = locate;
         (Name[i] as TextBox).Size = new System.Drawing.Size(156, 20);
         StartTab.Controls.Add(Name[i] as TextBox);
         }

Name[i] に入力されたテキストを文字列に変換してから、ラベルに設定したい

4

2 に答える 2

3

Control.ControlCollection.Findを使用できます。

更新しました:

TextBox txtName =  (TextBox)this.Controls.Find("txtNameOfTextbox", true)[0];

if (txtName != null)
{
    return txtName.Text;
}
于 2013-05-18T19:56:18.943 に答える
0

あなたはそれが何のタイプかは言いませんNameが、ある種のリストのように見えます。プロパティに直接List<TextBox>アクセスできる方法を使用してみてください。TextBoxこのようなもの。また、それが何のコントロールなのかわからないので、このテスト コードにStartTaba を使用しました。(フォームのプロパティをマスクするPanelことにも注意してください。これが、リストをに変更した理由です)NameNamename

public partial class Form1 : Form
{
    List<TextBox> name = new List<TextBox>();
    int length = 5;
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < length; i++)
        {
            name.Add(new TextBox() { Location = new System.Drawing.Point(137, 158 + i * 25), 
                                     Size = new System.Drawing.Size(156, 20) });
            StartTab.Controls.Add(name[i]);
        }
    }

    private void button2_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < length; i++)
        {
            StartTab.Controls.Add(new Label() {Location = new System.Drawing.Point(name[i].Location.X + name[i].Width + 20,
                                               name[i].Location.Y), 
                                               Text = name[i].Text, 
                                               AutoSize = true });
        }
    }
}
于 2013-05-19T00:36:48.913 に答える