2016-11-18 64 views
-1

我是新来的人,在这里是用于编程的stackoverflow和初学者。 我对C#中有经验的程序员可能有一个非常基本的问题。获取用户输入并将其保存在应用程序内存中

我在Visual Studio中WinForms和工作,如果你看一下下面的截图:

Screenshot of the app

我知道用于获取用户输入姓氏,名字和出生日期,并具有它的代码在右侧的文本框中打印出来。 问题是我想添加几个人,如果我注册另一个人,它只会删除第一个人。 现在我的问题是这样的:

  • 如何将数据存储在应用程序(没有数据库是必要的,我只是希望它是在运行的应用程序的内存),这样我就可以添加多个个人和每个都在文本框中打印出一行。 然后,当我完成注册人员后,我想要将他们全部打印出来,并在另一页上按下另一个按钮。有点像旅行中的提交表单,您可以看到您在最后一页输入的所有数据。

我想我需要将它存储在List或其他东西,我已经尝试过,但我不能得到它的工作(可能不是正确的语法)。 这可能很简单,但我卡住了! :(

我希望我的问题是非常明显的。

一个巨大的感谢你对这里的任何帮助:)

+4

个人而言,我会购买一本关于C#编程的书。我希望这样一本书能教给我关于藏品之类的东西。 –

+1

请张贴代码,你试过用'List' –

+0

发布时,必须添加你有什么,如果你可以尝试,它有助于使一个圆形的问题是比较容易理解。此外,这将有助于提高你的技能,因为其他人经常会给你提示 – Harvey

回答

1

与3个字段创建一个Person类和注册您创建了一个新的Person对象你有一个输入添加到列表中,你可以在你的应用程序中保存。 点击第二个按钮,您将遍历列表并打印所有已添加的人员。

看到这样的事情,当然你得用户的Person类,而不是部分:

// Create a list of parts. 
    List<Part> parts = new List<Part>(); 

    // Add parts to the list. 
    parts.Add(new Part() {PartName="crank arm", PartId=1234}); 
    parts.Add(new Part() { PartName = "chain ring", PartId = 1334 }); 
    parts.Add(new Part() { PartName = "regular seat", PartId = 1434 }); 
    parts.Add(new Part() { PartName = "banana seat", PartId = 1444 }); 
    parts.Add(new Part() { PartName = "cassette", PartId = 1534 }); 
    parts.Add(new Part() { PartName = "shift lever", PartId = 1634 }); 

    // Write out the parts in the list. This will call the overridden ToString method 
    // in the Part class. 
    Console.WriteLine(); 
    foreach (Part aPart in parts) 
    { 
     Console.WriteLine(aPart); 
    } 
0

其简单:

有3个属性,名字,姓氏,生日

创建一类人

在您的项目中创建此人类的静态列表。

IList<person> myList = new List<person>(): 
myList.Add(person, person........); 

当您注册人员时,将数据添加到此列表中。

使用该静态列表在右侧块上显示输出,该列表将在程序运行之前可用。您可以将该列表用于所有其他目的。

0

我不知道如果我理解正确,但看看下面的代码片段:

public partial class Form1 : Form 
{ 
    List<object[]> people = new List<object[]>(); 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void btnRegister_Click(object sender, EventArgs e) 
    { 
     var person = new object[3]; 
     person[0] = txtFirstName.Text; 
     person[1] = txtLastName.Text; 
     person[2] = txtBirthday.Text; 

     people.Add(person); 

     txtPeople.Text = string.Empty; 

     for (var i=0;i<people.Count;i++) 
     { 
      txtPeople.Text += string.Format("First name:\t{0}", people[i][0].ToString()) + Environment.NewLine; 
      txtPeople.Text += string.Format("Last name:\t{0}", people[i][1].ToString()) + Environment.NewLine; 
      txtPeople.Text += string.Format("Birthday:\t\t{0}", people[i][2].ToString()) + Environment.NewLine + Environment.NewLine; 
     } 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     txtFirstName.Text = "FirstName" + people.Count(); 
     txtLastName.Text = "LastName" + people.Count(); 
     txtBirthday.Text = "Birthday" + people.Count(); 
    } 
} 
2

创建一个类映射一个人是一个伟大的路要走!

首先,你可以创建一个人。cs文件在你的项目中是这样的:

public class Person() { 

    public string firstName {get; set;} 
    public string lastName {get; set;} 
    public string birthday {get; set;} 

    public Person(fName, lName, bDay) { 
     firstName = fName; 
     lastName = lName; 
     birthday = bDay; 
    } 

    // Addition by @MongZhu 
    public override ToString() { 
     return firstName + " " + lastName + " Birthday: " + birthday; 
    } 

} 

接下来,在你的表单代码中,你需要创建一个像这样的全局列表。把这个在你的代码的开始,或在您onLoad事件:

List<Person> myList = new List<Person>; 

确保您已使用System.Collections.Generic顶部进口!

最后,当您点击您的'注册'按钮时,您想要添加到列表中。 这可以在onClick事件中完成的按钮:

myList.Add(new Person(tbfName.text, tblName.text, tbBirth.text); 

现在你将有保存人的名单。但你也想打印! 在您要打印的清单,你已经添加你可以为了通过列表进行迭代并获得所需的信息做一个foreach循环的新纪录也许以后无论触发:

foreach(Person p in myList) { 
    p.firstName // gets first name 
    p.lastName // gets last name 
    p.birthday // gets birthday 
    p.ToString() // Print all Person details -- Thanks @MongZhu 
} 

编辑 我已经修正了Person类中访问器的语法,如@MongZhu指出的那样,并且还展示了如何覆盖类中的ToString()方法以快速打印出所有人的详细信息。

在你的意见,你要求更多了澄清如何将此分配至标签:

foreach代码可以去你的按钮的onClick()事件。 点击“注册”后,新人将被创建并添加到列表中。在此代码后,您应该插入您的foreach:

// onClick 
void btnRegister_Click(object sender, EventArgs e) { 
    myList.Add(new Person(tbfName.text, tblName.text, tbBirth.text); // Added person to list 

    // Create a string will all the person details 
    string full; 
    foreach(Person p in myList) { 
     full += p.ToString() + " "; // Print all Person details -- Thanks @MongZhu 
    } 

    // Update the label 
    lbDisplay.Text = full; 
} 
+0

感谢您帮助新手出去,我很感激! –

+0

我在哪里写了foreach代码?在按钮(打印出所有列表数据)事件? 我如何将它打印到标签上? 到目前为止,我得到了这样的结果: public partial class Form1:Form { List myList = new List (); public Form1() { InitializeComponent(); } 而 私人无效btnRegisterPerson_Click(对象发件人,EventArgs的) { myList.Add(新的Person(txtFirst.Text,txtLast.Text,txtBirthday。文本)); } –

+0

你的文章没有实现任何'getfirstName()'方法。可能会令人困惑。为什么在Person类中实现'private'属性,然后使用方法来访问数据?而不是使用适当的C#属性与公共getter。 –

相关问题