如何在Windows窗体中更改实例中变量的值

时间:2013-04-05 10:06:44

标签: c# winforms textbox

我有一个对象的实例,它被添加到列表中,然后数据以窗口形式c#显示。是否可以通过Windows窗体更改实例的数据?

Person Joe = new Person("Sam", "Smith", "12.05.1992");
person.Add(Joe);

这是随后添加到人员列表中的人员的实例。

textBox1.Text = person.Forename;
textBox2.Text = person.Surname;
textBox4.Text = person.DateOfBirth;

这就是我通过文本框在表单中显示它的方式,以便您可以输入新名称,然后保存更改的数据。

这是我的想法..

person.Forename = textBox1.Text;

但我认为我需要一些东西。

2 个答案:

答案 0 :(得分:1)

好的,我知道你的Person课程看起来像这样:

public class Person
{
    public Person(string forename, string surname, string dateOfBirth)
    {
        Forename = forename;
        Surname = surname;
        DateOfBirth = dateOfBirth;
    }
    public string Forename { get; set; }
    public string Surname { get; set; }
    public string DateOfBirth { get; set; }

    public override string ToString()
    {
        return Forename + ";" + Surname + ";" + DateOfBirth;
    }
}

所以你的表格看起来应该是这样的:

public partial class frmMain : Form
{
    private List<Person> Persons = new List<Person>();

    public frmMain()
    {
        InitializeComponent();

        Person Joe = new Person("Sam", "Smith", "12.05.1992");
        Persons.Add(Joe);

        textBox1.Text = Persons[0].Forename;
        textBox2.Text = Persons[0].Surname;
        textBox3.Text = Persons[0].DateOfBirth;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show(Persons[0].ToString()); // before change
        Persons[0].Forename = textBox1.Text;
        MessageBox.Show(Persons[0].ToString()); // after change
    }
}

但我不太明白,为什么你想要一个List<Person>而不只是一个Person。如果列表中有多个Person,您怎么知道哪一个要显示并随后更改?

PS:我强烈建议您使用DateTime作为DateOfBirth的类型。如果您想要真正使用出生日期,那么您将陷入困境......

答案 1 :(得分:0)

Tyr文本更改了事件或文本验证事件 例如:

private void textBox1_TextChanged(object sender, EventArgs e)
        {
            person.Forename = textBox1.Text;
        }