C# 获取用户输入并将其保存在应用程序内存中
我是stackoverflow的新手,也是编程的初学者。 我可能有一个非常基本的问题要问有经验的C语言程序员 我在Visual Studio WinForms中工作,如果您查看以下屏幕截图: 我知道获取用户输入的名字、姓氏和生日的代码,并在右边的文本框中打印出来。 问题是,我想添加几个人,如果我注册另一个人,它只会删除第一个人。 现在我的问题是:C# 获取用户输入并将其保存在应用程序内存中,c#,.net,winforms,C#,.net,Winforms,我是stackoverflow的新手,也是编程的初学者。 我可能有一个非常基本的问题要问有经验的C语言程序员 我在Visual Studio WinForms中工作,如果您查看以下屏幕截图: 我知道获取用户输入的名字、姓氏和生日的代码,并在右边的文本框中打印出来。 问题是,我想添加几个人,如果我注册另一个人,它只会删除第一个人。 现在我的问题是: 我如何将数据存储在应用程序中(不需要数据库,我只希望它存储在运行应用程序的内存中),这样我就可以添加几个人,并在文本框中以自己的行打印出每个人。
- 我如何将数据存储在应用程序中(不需要数据库,我只希望它存储在运行应用程序的内存中),这样我就可以添加几个人,并在文本框中以自己的行打印出每个人。 然后,当我完成人员注册后,我想通过按下另一页上的另一个按钮,将他们全部打印出来。有点像旅行时的提交表单,您可以看到在最后一页输入的所有数据
非常感谢您在此提供的帮助:)使用您的3个字段创建一个Person类,然后在register上使用您拥有的输入创建一个新Person对象,并将其添加到应用程序中可以保存的列表中。 点击第二个按钮,您可以在列表上迭代并打印所有已添加的人员 请参见以下内容,当然您必须使用Person类而不是Part:
// 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);
}
//创建零件列表。
列出零件=新列表();
//将零件添加到列表中。
添加(新零件(){PartName=“曲柄臂”,PartId=1234});
添加(新零件(){PartName=“chain ring”,PartId=1334});
parts.Add(新的Part(){PartName=“regular seat”,PartId=1434});
添加(新零件(){PartName=“banana seat”,PartId=1444});
添加(新零件(){PartName=“caste”,PartId=1534});
添加(新零件(){PartName=“换档杆”,PartId=1634});
//写出清单中的部分。这将调用重写的ToString方法
//在零件课上。
Console.WriteLine();
foreach(部分分开)
{
控制台。写入线(分开);
}
它很简单:
创建一个具有3个属性的person类:firstName、lastName和birth
在项目中创建此person类的静态列表
IList<person> myList = new List<person>():
myList.Add(person, person........);
IList myList=new List():
我的列表。添加(个人,个人……);
注册人员时在此列表中添加数据
使用该静态列表在右侧块上显示输出,该列表将在程序运行之前可用。您可以将该列表用于所有其他用途。我不确定是否正确理解您的意思,但请查看以下代码片段:
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();
}
}
公共部分类表单1:表单
{
列表人员=新列表();
公共表格1()
{
初始化组件();
}
私有无效BTN注册表\u单击(对象发送者,事件参数e)
{
var person=新对象[3];
person[0]=txtFirstName.Text;
person[1]=txtLastName.Text;
person[2]=txtbearth.Text;
人。添加(人);
txtPeople.Text=string.Empty;
for(var i=0;i创建一个类来映射一个人是一个很好的方法
首先,您可以在项目中创建Person.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>;
现在,您将有一个保存人员的列表。但您也要打印!
在您希望打印列表的任何触发器上,可能在添加新记录后,您可以执行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
}
编辑
正如@MongZhu所指出的,我已经修复了Person类中访问器的语法,并且还演示了如何重写类中的ToString()
方法,以快速打印出所有Person详细信息
在您的评论中,您要求进一步澄清如何将其分配给标签:
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;
}
就我个人而言,我会买一本关于C#编程的书。我希望这本书能教我有关收藏等方面的知识。请在你试图使用列表的地方发布代码。发布时,如果可以,请始终添加你尝试过的内容,这有助于形成一个更容易理解的全面问题。此外,这将有助于提高你的滑雪水平就像其他人经常给你喝的一样哇,我还没想到会有答案呢。好地方:)谢谢你的建议,我会试试看!@彼得汉森,如果一个答案帮助你解决你的问题,你可能想考虑马克是正确答案。检查旁边的绿色检查图标旁边的答案。它会帮助其他人可能会发现你的问题有帮助,并且你们都将获得声誉感谢帮助一个新手。ie out,我很感激!我应该在哪里编写foreach代码?在按钮(打印所有列表数据)事件下?以及如何将其打印到标签上?到目前为止,我得到了以下信息:公共部分类Form1:Form{list myList=new list();公共Form1(){InitializeComponent()}和private void btnRegisterPerson_Click(object sender,EventArgs e){myList.Add(new Person(txtFirst.Text,txtLast.Text,txtdearth.Text));}您的帖子没有实现任何getfirstName()
方法。可能会让人困惑。为什么要实现private
prop
// 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;
}