2013-04-28 3 views
1

Я создал форму с именем 'add child'. В этой форме я уронил выпадающий список, из которого пользователь может выбрать no childern, который у него есть. Изначально есть панель, содержащая текстовое поле, чтобы получить имя ребенка, 3 combobox, чтобы получить день месяца и год с даты рождения ребенка и еще одну коробку для группы крови ребенка. Теперь то, что я хочу, так это то, что пользователь выбирает свое количество детей, чтобы одна и та же панель была добавлена ​​во время выполнения один под другим в зависимости от выбранного номера.Как добавить панель типа того же типа с тем же типом элементов управления во время выполнения в форме C# windows?

я знаю, что просто добавить контроль мы закодировать как этот

private void addchildbtn_Click(object sender, EventArgs e) 
     { 
      Button btn = new Button(); 

      this.Controls.Add(btn); 
     } 

и что делать, если мы должны добавить один и тот же тип панели, содержащей те же элементы друг под другом. я сделал это codding, что неправильно

private void addchildbtn_Click(object sender, EventArgs e) 
     { 
      childpnl pnl = new childpnln(); 

      this.Controls.Add(pnl); 
     } 

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

+0

Есть ли ошибки? – Yatrix

+0

да ..... на самом деле я не знаю, как это сделать, поскольку я новичок @Yatrix – user2327043

+0

Я дал вам ответ ниже, но если вы новичок, вы все еще не можете понять все это. Вам нужно будет сделать некоторые исследования о том, как делать все эти вещи, но это часть программирования. Вы проводите много времени в Google. =) Ошибки появятся в окне «Ошибки», которое вы можете открыть в меню «Вид» в Visual Studio. Вы захотите, чтобы Google запустила ошибку, чтобы лучше понять, что происходит. – Yatrix

ответ

1
public int childrenCount; //The number of children 

    private void button1_Click(object sender, EventArgs e) { //Adds a child 
     childrenCount++; 
     Panel p = new Panel(); 
     p.Location = new Point(10, (childrenCount - 1) * 200); 
     p.Width = 300; 
     p.Height = 200; 
     p.BorderStyle = BorderStyle.Fixed3D; 
     TextBox tName = new TextBox(); //TextBox for the name 
     tName.Location = new Point(200, 20); 
     tName.Text = "name"; 
     MonthCalendar calendar = new MonthCalendar(); //Calendar to choose the birth date 
     TextBox bloodGroup = new TextBox(); //TextBox for the blood group 
     bloodGroup.Location = new Point(200, 50); 
     bloodGroup.Text = "blood group"; 
     p.Controls.Add(tName); 
     p.Controls.Add(calendar); 
     p.Controls.Add(bloodGroup); 
     this.Controls.Add(p); 
    } 

    private void button2_Click(object sender, EventArgs e) { //Checks the values 
     string message = ""; 
     foreach(Control c in this.Controls) { //loop throught the elements of the form 
      if (c.GetType() == typeof(Panel)) { //check if the control is a Panel 
       //Get the values from the input fields and add it to the message string 
       Panel p = (Panel)c; 
       TextBox tName = (TextBox)(c.Controls[0]); 
       MonthCalendar calendar = (MonthCalendar)(c.Controls[1]); 
       TextBox bloodGroup = (TextBox)(c.Controls[2]); 
       message += tName.Text + ":\n"; 
       message += "birth date: " + calendar.SelectionStart.ToShortDateString() + "\n"; 
       message += "blood group: " + bloodGroup.Text + "\n\n"; 
      } 
     } 
     //show the message string in a MessageBox 
     MessageBox.Show(message); 
    } 

пример:

Если добавить ребенка под названием Jack, дата рождения апреля 28. 2013 и группа крови A +, то результат будет следующий:

Джек:

Дата рождения: 28.4.2013

blo споса группа: +

(Обрати внимание, строка даты может измениться, если у вас есть другие культуры)

+0

спасибо, уважаемый, большое спасибо .... он работает правильно, единственная проблема заключается в местоположении, которое я пытаюсь решить самостоятельно, спасибо еще раз спасибо u так так много – user2327043

0

Добавление панели таким образом выглядит правильно. Возможно, что-то другое вызывает проблемы. С ошибкой сказать сложно.

Что касается второй части, если вы хотите отправить данные в базу данных из своих элементов управления, не обрабатывайте код базы данных внутри кода. Создайте уровень доступа к данным для обработки вызовов базы данных.

Дайте своим пользователям элементы управления или общедоступные свойства, которые вы можете получить из или создать модель, которую вы могли бы вернуть из функции или свойства в пользовательском элементе управления. Затем эту модель следует использовать вместе с вашим уровнем доступа к данным для обновления базы данных по мере необходимости.

Имейте в виду, что ваша основная форма или модель вашей основной формы (или класс контроллера, если вы прошли этот маршрут) координируете управление данными с элементов управления на DAL на Db.

+0

может, пожалуйста, дать мне код помощи, чтобы разрешить эту проблему ... please – user2327043

+0

Я еще не сделал ни одной трещины в этой новой форме, добавленной как я ничего не знаю об этом – user2327043

+0

Я просто предложил полностью слишком много кода для записи. Я бы написал вашу программу для вас, для чего это не тот сайт. Этот сайт не должен преподавать людям, как программировать, а помогать с конкретными проблемами с кодом. Вам нужно научиться программировать самостоятельно. Посмотрите учебники .NET, купите книгу и используйте MSDN. – Yatrix

Смежные вопросы