-2

この作業を行う上で大きな問題があります。私がする必要があるのは、配列を表示することだけです。

namespace OOP_3
{
    public partial class Add_Child : Form
    {
        public Add_Child()
        {
            InitializeComponent();
        }

        private void btnAddChild_Click(object sender, EventArgs e)
        {
            Mother m = new Mother();
            m.MyChildren = new Child[3];

            int ID = int.Parse(txtID.Text);
            string FNAME = txtFname.Text;
            string LName = txtLname.Text;
            DateTime DOB = DateTime.Parse(txtDob.Text);
            //Add children

            label5.Text = m.GetMyChildrenDetails();
            if (addtoarray(m,ID,FNAME,LName,DOB) == true)
            {
                MessageBox.Show("added", "Add Child");
            }
            else
            {
                MessageBox.Show("cannot add", "Child add - full");
            }
        }

        public bool addtoarray(Mother m, int ID, string FNAME, string LName,DateTime DOB)
        {
            for (int i = 0; i < m.MyChildren.Length; i++)
            {
                if (m.MyChildren[i]== null)
                {
                    m.MyChildren[i] = new Child(m); //See comment below
                    m.MyChildren[i].ChildId = ID;
                    m.MyChildren[i].FirstName = FNAME;
                    m.MyChildren[i].LastName = LName;
                    m.MyChildren[i].DateOfBirth = DOB;
                    return true;
                }
            }
            return false;
        }
    }
}

コードのコメントから: この行は、ヒープ内のすべてを破棄し、配列を再作成して、私の label5.text に表示されない値を持つようにします。私は何時間も研究を熟考してきました。 which iam :) いくつかの助けがあればいいのですが:)...必要に応じて、クラスとメインフォームを投稿します:)

public class Mother
{
    //Fields
    private int motherId;
    private string firstName;
    private string lastName;
    private string mobile;
    private Child[] myChildren; //mother "has a" many children

    //props
    public Child[] MyChildren
    {
        get { return myChildren; }
        set { myChildren = value; }
    }

    public string Mobile
    {
        get { return mobile; }
        set { mobile = value; }
    }

    public string LastName
    {
        get { return lastName; }
        set { lastName = value; }
    }

    public string FirstName
    {
        get { return firstName; }
        set { firstName = value; }
    }

    public int MotherId
    {
        get { return motherId; }
        set { motherId = value; }
    }

    //constructors

    //methods
    //Get Mother Details
    public override string ToString()
    {
        return motherId + ", " + firstName + ", " + lastName + ", " + mobile;
    }

    //AddChild
    public bool AddChild(Child myChild)
    {
        for (int i = 0; i < myChildren.Length; i++)
        {
            if (myChildren[i] != null)
            {
                myChildren[i] = myChild;
                return true;
            }
        }

        return false;
    }

    //GetMyChildrenDetails
    public string GetMyChildrenDetails()
    {
        string msg = "";
        for (int i = 0; i < myChildren.Length; i++)
        {
            if (myChildren[i] != null)
            {
                msg += "\n" + myChildren[i];
            }
        }
        return msg;
    }

public class Child
{
    //fields
    private int childId;
    private string firstName;
    private string lastName;
    private DateTime dateOfBirth;
    private Mother myMother; //child "has a" mother

    //props
    public Mother MyMother
    {
        get { return myMother; }
        set { myMother = value; }
    }

    public DateTime DateOfBirth
    {
        get { return dateOfBirth; }
        set { dateOfBirth = value; }
    }

    public string LastName
    {
        get { return lastName; }
        set { lastName = value; }
    }

    public string FirstName
    {
        get { return firstName; }
        set { firstName = value; }
    }

    public int ChildId
    {
        get { return childId; }
        set { childId = value; }
    }

    //constructors
    //Child cannot be created without a mother
    public Child(Mother myMother)
    {
        this.myMother = myMother;
    }
    //Child cannot be created without a mother
    public Child(Mother myMother, int childId)
    {
        this.myMother = myMother;
        this.childId = childId;
    }

    //methods
    //Get Child Details
    public override string ToString()
    {
        return childId + ",  " + firstName + ", " + lastName + ", " + dateOfBirth;
    }

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void btnRegister_Click(object sender, EventArgs e)
    {

    }

    private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
    {

    }

    private void closeToolStripMenuItem_Click(object sender, EventArgs e)
    {
        Close();
    }

    private void BtnAddChild_Click(object sender, EventArgs e)
    {
        Add_Child child = new Add_Child();
        child.Show();
    }

    private void btnRegister_Click_1(object sender, EventArgs e)
    {
        //create a mother object
        Mother m = new Mother();
        m.MotherId = int.Parse(txtID.Text);
        m.FirstName = txtFname.Text;
        m.LastName = txtLname.Text;
        m.Mobile = txtMobile.Text;
4

2 に答える 2

0

Listすべての母親に 3 人の子供がいるわけではないため、配列の代わりに使用することをお勧めします。コード例:

public static class Program
{
    static void Main(string[] args)
    {
        Mother mother = new Mother {
            FirstName = "M First", LastName = "M Last", Contact = "225632655"
        };

        //Add dependents
        mother.AddChild(new Child{ChildID = 1, FirstName = "Child FirstName 1", LastName = "Child LastName 1"});
        mother.AddChild(new Child{ChildID = 2, FirstName = "Child FirstName 2", LastName = "Child LastName 2"});
        mother.AddChild(new Child{ChildID = 3, FirstName = "Child FirstName 3", LastName = "Child LastName 3"});

        Console.WriteLine(mother);
        //List all the mother dependents
        foreach(Child c in mother.Children)
        {
            Console.WriteLine(c);
        }
        Console.ReadKey();
    }
}

class Mother
{
    public string FirstName {get; set;}
    public string LastName {get; set;}
    public string Contact {get; set;}
    private List<Child> _child;
    public Mother()
    {
        _child = new List<Child>();
    }

    public void AddChild(Child child)
    {
        _child.Add(child);
    }

    public List<Child> Children
    {
        get { return _child; }
    }

    public override string ToString()
    {
        return string.Format("{0}, {1} ({2})", LastName, FirstName, Contact);
    }
}

class Child
{
    public string FirstName {get; set;}
    public string LastName {get; set;}
    public int ChildID {get; set;}

    public override string  ToString()
    {
        return string.Format("{0} {1}, {2}", ChildID, LastName, FirstName);
    }
}

これが役立つことを願っています。

于 2012-10-27T02:39:09.073 に答える
0

新しい子にその親オブジェクトへの参照を与えることは、問題の原因ではありません。要約すると、次のように述べています。

"label5.text に表示されない値を"

これは、バインディングに問題があるか、実装していないINotifyPropertyChangedか、または UI 更新メカニズムが機能していない (バインディングを使用していない場合) ことを示します。UIに何を使用しているかを述べていないので、それが私ができる限りのことです...

于 2012-10-27T02:29:27.087 に答える