Q:

Adding object to listbox with name attribute

I have created a base class with a derived class. In winforms, after adding in the relative the attributes of the class, an instance of the derived class should be added to a listbox, with the name attribute of the derived class as the item name in the listbox. I am receiving an OutOfMemory exception, saying that the listbox is full. There are no items in the listbox, so my code is somehow caught in a loop of adding items. Here is the relevant code snippet for the derived class:
//child class
public class Player : Character
{
    //new attributes
    string gender;
    bool dead;

    //constructor
    public Player(string charName, int charHitPoints, int charAC, int charAttack, int charDamage, string charAttackType, string Gender, bool Dead)
        : base(charName, charHitPoints, charAC, charAttack, charDamage, charAttackType)
    {
        gender = Gender;
        dead = Dead;
    }

    //accessible attributes
    public string PlayerGender { get; set; }
    public bool PlayerDead { get; set; }

    public override string ToString()
    {
        return Name;
    }
}

As you can see, I am trying to use the Name attribute as the item name in the listbox. Perhaps I am not using the override correctly? This is the relevant code snippet for adding an instance to the listbox. This occurs on a click event of a winforms button:
 //create button
    private void button1_Click(object sender, EventArgs e)
    {
        //if creating a Player
        if (radioButton1.Checked & !radioButton2.Checked)
        {
            int value1;

            if (int.TryParse(textBox2.Text, out value1)
                && int.TryParse(textBox3.Text, out value1)
                && int.TryParse(textBox4.Text, out value1)
                && int.TryParse(textBox5.Text, out value1))
            {
                //create new object of Player class
                PlayerListBox1.Items.Add (new Player(textBox1.Text, Convert.ToInt32(textBox2.Text), Convert.ToInt32(textBox3.Text), Convert.ToInt32(textBox4.Text), Convert.ToInt32(textBox5.Text), textBox6.Text, textBox7.Text, false));

            }
            else
            {
                MessageBox.Show("Please enter only numbers for Hit Points, Armor Class, Attack, and Damage.", "Invalid Input");
            }
        }
    }

Thanks for any help!
UPDATE:
This is the base class:
 //parent class
public class Character
{
    //common attributes
    string name;
    int hitPoints;
    int armorClass;
    int attack;
    int damage;
    string attackType;

    //constructor
    public Character(string charName, int charHitPoints, int charAC, int charAttack, int charDamage, string charAttackType)
    {
        //constructor arguments
        name = charName;
        hitPoints = charHitPoints;
        armorClass = charAC;
        attack = charAttack;
        damage = charDamage;
        attackType = charAttackType;
    }

    //accessible attributes
    public string Name{get; set;}
    public int HitPoints { get; set; }
    public int ArmorClass { get; set; }
    public int Attack { get; set; }
    public int Damage { get; set; }
    public string AttackType { get; set; }
}

A:

I figured out that the way to add an object with the item name as the attribute of the object. It was simpler than I thought. First, the relevant attribute (property) needs to be declared public. Then, the listbox is set with the following code (relevant to my own code, as posted in my question):
PlayerListBox1.DisplayMember = "Name";
EnemyListBox1.DisplayMember = "Name";

This will set the DisplayMember of each respective listbox to the "Name" property of the class object (instance). In my code in the original question, the "Name" attribute was pushed down to the derived classes through the charName constructor. Thus, the derived class still utilizes the public "Name" attribute, in a roundabout way.

