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