Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取用户输入并将其保存在应用程序内存中_C#_.net_Winforms - Fatal编程技术网

C# 获取用户输入并将其保存在应用程序内存中

C# 获取用户输入并将其保存在应用程序内存中,c#,.net,winforms,C#,.net,Winforms,我是stackoverflow的新手,也是编程的初学者。 我可能有一个非常基本的问题要问有经验的C语言程序员 我在Visual Studio 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;
}