3

我有一个名为“add.cs”的主表单,在这个表单上包含用户信息(它的名字,年龄......等等)我拖动一个按钮来添加用户的孩子信息(他们的名字,血型,日期出生..等)其点击事件打开一个表单“addchild.cs”,我在该表单上拖动了两个按钮,一个用于存储数据,另一个用于在运行时添加控件。要在运行时添加控件,我使用了这种编码

 private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                childrenCount++;

                Label lblchild = new Label();
                lblchild.BorderStyle = BorderStyle.Fixed3D;
                lblchild.Location = new Point(20, (childrenCount - 1) * 50);
                lblchild.Size = new System.Drawing.Size(50, 20);
                lblchild.Text = "Child  " + (childrenCount - 1);
                TextBox tName = new TextBox(); //TextBox for the name
                tName.BorderStyle = BorderStyle.Fixed3D;
                tName.Location = new Point(120, (childrenCount - 1) * 50);
                tName.Size = new System.Drawing.Size(135, 60);
                tName.Text = "";
                DateTimePicker calendar = new DateTimePicker();
                //MonthCalendar calendar = new MonthCalendar(); //Calendar to choose the birth date
                calendar.Location = new Point(310, (childrenCount - 1) * 50);
                ComboBox bloodGroup = new ComboBox(); //ComboBox for the blood group
                bloodGroup.Location = new Point(650, (childrenCount - 1) * 50);
                bloodGroup.Size = new System.Drawing.Size(135, 60);
                for (Enum.Blood_Group l = Enum.Blood_Group.O_negative; l <= Enum.Blood_Group.AB_positive; l++)
                {
                    bloodGroup.Items.Add(l);
                }

                this.panel1.Controls.Add(lblchild);
                this.panel1.Controls.Add(tName);
                this.panel1.Controls.Add(calendar);
                this.panel1.Controls.Add(bloodGroup);


            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

        }

现在,我创建了一个名为“Childrendata”的单独外部类,用于存储在“addchild.cs”上添加的控件的值。这些类包含我要存储的所有数据。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Jain_milan
{
    class Childrendata
    {
        string childname, childblood, childbirth;


        public string Childbirth
        {
            get { return childbirth; }
            set { childbirth = value; }
        }

        public string Childblood
        {
            get { return childblood; }
            set { childblood = value; }
        }

        public string Childname
        {
            get { return childname; }
            set { childname = value; }
        }

    }
} 

然后在 addchild.cs 上提交按钮的单击事件上,我使用此代码将控件数据存储到名为 Childdata.cs 的外部类的变量中。

  private void submitbtn_Click(object sender, EventArgs e)
        {
            //Checks the values
            try
            {
                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 panel1 = (Panel)c;
                        Label lblchild = (Label)(c.Controls[0]);
                        TextBox tName = (TextBox)(c.Controls[1]);
                        DateTimePicker calendar = (DateTimePicker)(c.Controls[2]);
                        ComboBox bloodGroup = (ComboBox)(c.Controls[3]);

                        //add to class
                        Childrendata childdata=new Childrendata();
                        childdata.Childname = tName.Text;
                        childdata.Childblood= bloodGroup.Text;
                        childdata.Childbirth=calendar.Text;


                    }
                }
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
         }

现在我怎样才能使构造函数以数组或任何其他东西作为参数并存储所有值,我可以将此构造函数调用到名为 add.cs 的主页面。因此,在 add.cs 上的按钮的单击事件中,我可以存储通过使用这样的编码将这些值输入数据库。

Childrendata cd = new Childremdata();
Children child = new Children();

                    child.Namechild = cd.Childname;
                    child.Bloodchild = cd.Childblood;
                    child.Dobchild = cd.Childbirth;
                    if (new InsertAction().Insertchildren(child))
                    {
                        MessageBox.Show(" Children Insertion Happen ");
                    }
                    else
                    {
                        MessageBox.Show(" Children Insertion does not Happen ");
                    }

请告诉我确切的例子,因为我已经尝试了很多来解决这个问题但没有输出!请帮忙请请

4

3 回答 3

4

我建议您创建一个名为“模型”的类,其中包含您孩子的数据(如姓名、血型等)。

这个模型类将成为所有数据的“家”,您可以将它传递给任何其他需要它的表单或类——所以,现在您只传递了 1 个参数。

当您有多个孩子时,您可以将 ChildModels 放入集合/数组/列表/或 ObservableCollection(用于数据绑定)中。然后你可以遍历列表中的每个孩子来操作它们。

如果您想将其带到下一步,请在模型上实现 System.ComponentModel.INotifyPropertyChanged,并使用数据绑定使数据在表单控件中可见,而不是手动将数据移入和移出控件。

有关更多信息,请搜索模型视图控制器模式。

于 2013-05-05T14:23:37.463 回答
3

你可以看看这段代码:

添加.cs

public class Add
    {
        private List<Childrendata> children;   //Create this List of Childrendata in Add.cs form

        public void CreateChildControls()   // This is on Button click to create another from with controls
        {
            children = new List<Childrendata>(); // Call Add.cs form and pass the List
            AddChild obj = new AddChild(children);
            obj.StoreData();
        }

        public void StoreInDB()  // This is on final Submit to DB
        {
            if (new InsertAction().Insertchildren(children)) // Pass the same List of Childrendata to Save in DB
            {
                MessageBox.Show(" Children Insertion Happen ");
            }
            else
            {
                MessageBox.Show(" Children Insertion does not Happen ");
            }
        }
    }

AddChild.cs

public class AddChild
{
    private List<Childrendata> m_children;
    public AddChild(List<Childrendata> children)
    {
        this.m_children = children; //Initialize the same List as sent by Mainform
    }

    public void AddControls()
    {

    }

    public void StoreData()  // This is on Submit button click in child form to add new child details
    {
        for (int i = 0; i < 10; i++)
        {
            // Filled with some dummy data
            Childrendata childdata = new Childrendata();
            childdata.Childname = "skumar" + i;
            childdata.Childblood = "B" + i;
            childdata.Childbirth = "2013/10/"+ i;

            m_children.Add(childdata);   // Add to same List
        }
    }
}

儿童数据.cs

   public class Childrendata
    {
        string childname, childblood, childbirth;

        public string Childbirth
        {
            get { return childbirth; }
            set { childbirth = value; }
        }

        public string Childblood
        {
            get { return childblood; }
            set { childblood = value; }
        }

        public string Childname
        {
            get { return childname; }
            set { childname = value; }
        }

    }
于 2013-05-05T19:28:46.220 回答
1

我不太确定你到底想要什么,但你当然可以在 Childrendata 类中有这样的构造函数:

public class Childrendata
{
   public Childrendata(Children child)
   {
      childname = child.Name;
      //etc...
于 2013-05-05T14:15:56.230 回答