2013-04-05 65 views
0

我有一個對象的實例被添加到列表中,然後數據顯示在Windows窗體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; 

,但認爲我需要後的東西。

+0

你是什麼意思「我需要一些東西」?你的問題到底是什麼? – pascalhein 2013-04-05 10:08:07

+0

什麼是人?我的意思是,「人」是什麼類型?根據你提供的信息,它可能是'List ',或者如果'Student'從某個'Person'類繼承了'List ',但是'person.Forename'等沒有意義。 – Corak 2013-04-05 10:12:10

+0

表示無法投放 – ProgrammingRookie 2013-04-05 10:12:23

回答

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 
    } 
} 

但我不明白爲什麼你w應該想要一個List<Person>而不只是一個Person。如果列表中有多個Person,您如何知道,哪一個顯示並隨後更改? PS:我強烈建議您使用DateTime作爲您的DateOfBirth的類型。如果你想要真正與出生日期一起工作,你將處於一個麻煩的世界......

+0

感謝您認爲我需要對我的代碼進行一些更改。感謝您的幫助和提示 – ProgrammingRookie 2013-04-05 10:48:17

0

酪氨酸文本改變事件或文本驗證事件 如:

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