我尝试过制作一个简单的C# Windows窗体应用程序.NET框架,其中有一个类(string Name,string LastName,string Classroom,string DateDay),其中包含三个文本框条目和一个日期时间选择器条目。所有这些条目都保存到一个列表和一个列表框中。我需要在if语句中添加这些条目,以便检查每个条目,如果我试图放入列表/列表框中的条目已经在列表框中。如果条目重复,它将给予一个消息框错误,如果不重复,它将使用if语句的延续部分添加它。
下面是我尝试进行的重复检查:
private void btnAdding_Click(object sender, EventArgs e)
{
if (txtName.Text != "" && txtLastName.Text != "" && txtClassroom.Text != "" )
{
if (ListBox.Items.Cast<string>().Contains(ListBox.Items.ToString()))
{
MessageBox.Show("This entry already exists.", "error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else {
List.Add(new Student(txtName.Text, txtLastName.Text, txtClassroom.Text, dateDay.Value.ToString("dd.MM.yyyy")));
RefreshCheck();
}
}
else
{
MessageBox.Show("You didnt fill out all the text boxes.", "error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
public void RefreshCheck()
{
ListBox.Items.Clear();
for (int i = 0; i < seznam.Count(); i++)
{
ListBox.Items.Add(List[i].StudentAdd());
this.txtName.Clear();
this.txtLastName.Clear();
this.txtClassroom.Clear();
this.dateDay.Value = DateTime.Today;
this.tabStudent.SelectedTab = this.tabCheck;
}
}
下面是我的原始代码,没有重复检查(只有if语句):
private void btnAdding_Click(object sender, EventArgs e)
{
if (txtName.Text != "" && txtLastName.Text != "" && txtClassroom.Text != "" )
{
List.Add(new Student(txtName.Text, txtLastName.Text, txtClassroom.Text, dateDay.Value.ToString("dd.MM.yyyy")));
RefreshCheck();
}
else
{
MessageBox.Show("You didnt fill out all the text boxes.", "error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
public void RefreshCheck()
{
ListBox.Items.Clear();
for (int i = 0; i < List.Count(); i++)
{
ListBox.Items.Add(List[i].StudentAdd());
this.txtName.Clear();
this.txtLastName.Clear();
this.txtClassroom.Clear();
this.dateDay.Value = DateTime.Today;
this.tabStudent.SelectedTab = this.tabCheck;
}
}
我不知道如何设置for each循环来检查列表框/列表条目。如果你知道怎么做,请帮助我。
下面是我如何添加到列表框中的代码:
List.Add(new Student(txtName.Text, txtLastName.Text, txtClassroom.Text, dateDay.Value.ToString("dd.MM.yyyy")));
以下是该类返回添加到列表框中的值的方式:
public string StudentAdd()
{
return $"{this.Name} {this.LastName} | {this.Clasroom} | {this.DateOfLeave}";
}
编辑:更改了OsveziPregledDijaka()-〉刷新检查,将刷新检查函数添加到代码中。
3条答案
按热度按时间eqqqjvef1#
可以使用LINQ表达式查看该项是否存在。
vjhs03f72#
可以重写Student类中的Equals运算符,然后使用Contains方法检查列表。
然后检查项目:
hgncfbus3#
你需要搜索列表框显示的字符串,但是上面的代码使用了ListBox.Items.ToString(),这将只是ListBox类名,而不是ListBox显示的单个字符串。
因此,假设您的列表框使用名、姓和教室显示有关学生的信息,您需要构建一个类似于items集合所显示的字符串
并使用该字符串搜索items集合(无需调用Cast())
这里重写了完整的事件单击处理程序