Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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#_Arrays - Fatal编程技术网

C# 如何加载数组列表中的所有对象

C# 如何加载数组列表中的所有对象,c#,arrays,C#,Arrays,我试图弄清楚如何通过对象数组列表加载。我能够检索数组中的最后一个对象,但之后它将不允许我加载任何其他对象。这是我的部分代码。正如您所看到的,它将对象保存到列表中,但是当我单击loadLastBtn时,它将只加载最近的条目,如果我再次点击它,则不会加载任何内容 List<Members> lstMembers = new List<Members>(); private int hold; private void submitBtn_Click(o

我试图弄清楚如何通过对象数组列表加载。我能够检索数组中的最后一个对象,但之后它将不允许我加载任何其他对象。这是我的部分代码。正如您所看到的,它将对象保存到列表中,但是当我单击loadLastBtn时,它将只加载最近的条目,如果我再次点击它,则不会加载任何内容

    List<Members> lstMembers = new List<Members>();
    private int hold;
    private void submitBtn_Click(object sender, EventArgs e)
    {
        if (string.IsNullOrEmpty(firstNameTxt.Text) || string.IsNullOrEmpty(lastNameTxt.Text)
           || string.IsNullOrEmpty(userNameTxt.Text) ||
           string.IsNullOrEmpty(passwordTxt.Text) || string.IsNullOrEmpty(confPassTxt.Text)
           || string.IsNullOrEmpty(majorBox.Text) || string.IsNullOrEmpty(specialtyBox.Text))
        {
            MessageBox.Show("You must enter in all fields before moving forward");
        }
        else
        {
            Members m1 = new Members(firstNameTxt.Text, lastNameTxt.Text, userNameTxt.Text,
                                        passwordTxt.Text, confPassTxt.Text, majorBox.Text,
                                        specialtyBox.Text);
            lstMembers.Add(m1);
        }
    }


   private void loadLastBtn_Click(object sender, EventArgs e)
    {
        firstNameTxt.Text = lstMembers[hold].FirstName;
        lastNameTxt.Text = lstMembers[hold].LastName;
        userNameTxt.Text = lstMembers[hold].UserName;
        passwordTxt.Text = lstMembers[hold].Password;
        confPassTxt.Text = lstMembers[hold].ConfPassword;
        majorBox.Text = lstMembers[hold].Major;
        specialtyBox.Text = lstMembers[hold].Specialty;

        hold++;
    }
List lstMembers=new List();
私人控股;
私有void submitBtn_单击(对象发送方,事件参数e)
{
if(string.IsNullOrEmpty(firstNameTxt.Text)| | string.IsNullOrEmpty(lastNameTxt.Text)
||string.IsNullOrEmpty(userNameTxt.Text)||
string.IsNullOrEmpty(passwordTxt.Text)| | string.IsNullOrEmpty(confPassTxt.Text)
||string.IsNullOrEmpty(majorBox.Text)| string.IsNullOrEmpty(specialtyBox.Text))
{
MessageBox.Show(“前进前必须在所有字段中输入”);
}
其他的
{
Members m1=新成员(firstNameTxt.Text、lastNameTxt.Text、userNameTxt.Text、,
passwordTxt.Text、confPassTxt.Text、majorBox.Text、,
specialtyBox.Text);
1.增加(m1);
}
}
私有void loadLastBtn_单击(对象发送者,事件参数e)
{
firstNameTxt.Text=lstMembers[hold].FirstName;
lastNameTxt.Text=lstMembers[hold].LastName;
userNameTxt.Text=lstMembers[hold].UserName;
passwordTxt.Text=lstMembers[hold].Password;
confPassTxt.Text=lstMembers[hold].ConfPassword;
Text=lstMembers[hold].mair;
specialtyBox.Text=lstMembers[hold].speciality;
hold++;
}

我已经编辑了我的答案。现在,每次我点击loadLastBtn时,它都会逐个打印每个用户,但它确实会显示从第一个用户到最后一个用户的信息,我需要它将最后一个用户显示到第一个用户

您需要的是这样的东西:

private int hold = lstMembers.Count -1;
private void loadLastBtn_Click(object sender, EventArgs e)
{

    firstNameTxt.Text = lstMembers[hold].FirstName;
    lastNameTxt.Text = lstMembers[hold].LastName;
    userNameTxt.Text = lstMembers[hold].UserName;
    passwordTxt.Text = lstMembers[hold].Password;
    confPassTxt.Text = lstMembers[hold].ConfPassword;
    majorBox.Text = lstMembers[hold].Major;
    specialtyBox.Text = lstMembers[hold].Specialty;

    hold--;
}
// -1 Indicates that you should start at the end of the list
int index = -1; 

private void loadButton_Click(object sender, EventArgs e)
{
    if (members != null && members.Count > 0) // Avoid accessing if list is empty or null
    {
        if (index == -1)
            index = members.Count - 1;

        firstNameTxt.Text = lstMembers[index].FirstName;
        lastNameTxt.Text = lstMembers[index].LastName;
        userNameTxt.Text = lstMembers[index].UserName;
        passwordTxt.Text = lstMembers[index].Password;
        confPassTxt.Text = lstMembers[index].ConfPassword;
        majorBox.Text = lstMembers[index].Major;
        specialtyBox.Text = lstMembers[index].Specialty;

        if (index == 0) // Reached beginning of array
            index = -1; // Indicate that next time the last element must be accessed
        else
            --index;
    }
}

这不仅仅是加载最后一个。每次在数组中循环时,它都会更改每个文本框的
Text
属性,您所看到的就是在上一次迭代中检索到的内容。如何让它通过数组加载。因此,每次我点击loadLastBtn,它都会加载我输入的最后一个文本框文本,直到它到达我输入的第一个文本框文本用户。现在它只加载最后一次迭代,每次我点击“加载最后一次”按钮,它就不会加载数组中的任何对象@kyriacos_kIt(最终)正在加载最后一个,我不确定你到底想要什么。是否希望它在每次单击“加载”按钮时逐个遍历数组?是的,这正是我希望它执行的操作。我需要它在每次点击load按钮时逐个遍历数组@kyriacos_kWell,现在您正在使用索引器
i
遍历数组,对吗?这里有一个提示:您可以使用
static
变量保存“当前”项目,并使用该变量在每次单击时访问项目,而不是在每次单击时循环遍历数组。我建议你自己试一试。让我知道进展如何。我只是在下面写了一条评论。谢谢你@KevinBrown。您知道我是如何让它显示从上次输入到第一次输入的用户对象的吗?将hold声明为hold=lstMembers.Count-1。用“hold-”代替“hold++”,这能满足你的问题吗?