Как динамически назначать вкладки и добавлять одно текстовое поле для хранения данных из текстового поля в базу данных, используя c# - PullRequest
0 голосов
/ 13 января 2020

Итак, я создаю формы с использованием Visual Studio. NET.

Я застреваю, когда пытаюсь динамически добавлять страницы вкладок при нажатии кнопки, которая создает текстовое поле в новой вкладке.

Когда я создаю несколько вкладок, я хочу получить данные из текстовых полей каждой вновь созданной вкладки и добавить их в базу данных. У меня проблемы с тем, что эти текстовые поля имеют то же имя, что и я их динамически. Я новичок в C# и мне нужна помощь.

 public void add()
        {
            aa.Add(txt.Text);

            var a = 1;
            var newTabPage = new TabPage()

            {
                Text = "Page" 
            };

            txt = new System.Windows.Forms.TextBox();
            this.tabControl1.TabPages.Add(newTabPage);
            newTabPage.Controls.Add(this.txt);

            System.Windows.Forms.Label lbl = new System.Windows.Forms.Label();
            newTabPage.Controls.Add(lbl);
            lbl.Text = "New";
            txt.Name = "Get";



            lbl.AutoSize = true;
            lbl.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            lbl.Location = new System.Drawing.Point(7, 389);
            lbl.Name = "label263";
            lbl.Size = new System.Drawing.Size(871, 13);
            lbl.TabIndex = 317;
            lbl.Text = "AA";

newTabPage.Controls.Add(lbl);
        }
        private void txt_TextChanged(object sender, EventArgs e)


        private void button1_Click_1(object sender, EventArgs e)
        {


            add();

            string value = txt.Text;


            aa.Add(value);
           }

private void saveToolStripMenuItem2_Click(object sender, EventArgs e)
        {
            SqlCommand command; 


           string insert1 = @"insert into testing(test) values(@testingt)";

            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                try
                {
                    conn.Open();


                    for(int i= 0;i<aa.Count;i++)
                    {

                        if (aa[i]!= ""  && aa[i]!="New Box")
                        {
                            command = new SqlCommand(insert1, conn);

                            command.Parameters.AddWithValue(@"testingt", aa[i]);
                            command.ExecuteNonQuery();
                        }
}
catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
}

1 Ответ

0 голосов
/ 14 января 2020

Может быть, вы можете установить свойство Name, чтобы различать guish их, когда вы создаете их, создавая переменную приращения.

int pagecount = 1;
private void btAddtab_Click(object sender, EventArgs e)
{
    TabPage tabPage = new TabPage
    {
        Name = "Tabpage" + pagecount.ToString(),
        Text = "Tabpage" + pagecount.ToString()
    };
    TextBox textBox = new TextBox
    {
        Name = "TextBox" + pagecount.ToString()
    };
    tabPage.Controls.Add(textBox);
    tabControl1.TabPages.Add(tabPage);
    pagecount++;
}

Что касается того, как получить значение указанного TextBox, Вы можете обратиться к следующему коду.

private void btGetValue_Click(object sender, EventArgs e)
{
    foreach (TabPage page in tabControl1.TabPages)
    {
        foreach (Control control in page.Controls)
        {
            // get the first textbox's value
            if (control is TextBox && control.Name == "TextBox1")
            {
                Console.WriteLine(((TextBox)control).Text);
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...