我有以下问题:我想检查我的 ListView 中是否已经存在预订编号。
我有以下代码可以将预订添加到 ListView 。
reservations.Add(new Reservation(nameTextbox.Text, lastnameTextBox.Text, gendercomboBox.SelectedText, Convert.ToInt32(ageNumericUpDown.Value), Convert.ToInt32(kamercomboBox.SelectedIndex) + 1, Convert.ToInt32(quantityUpDown.Value), true));
reserveringListView.Items.Clear();
foreach (Reservation reservation in reservations)
{
if (!reserveringListView.Items.Contains(reservation.roomnumber))
{
ListViewItem livi = new ListViewItem(reservation.name);
livi.SubItems.Add(reservation.lastname);
livi.SubItems.Add(Convert.ToString(reservation.gender));
livi.SubItems.Add(Convert.ToString(reservation.age));
livi.SubItems.Add(Convert.ToString(reservation.quantity));
livi.SubItems.Add(Convert.ToString(reservation.roomnumber));
reserveringListView.Items.Add(livi);
}
else
{
MessageBox.Show("Its impossible to reserve")
}
}
当我尝试测试此代码时出现以下错误:无法从 int 转换为 System.Windows.Forms.ListViewItem
最佳答案
您应该更改您的 if
语句,因为您检查 ListView.Items
是否包含 int
。你不能这样做,而且,在 if
中,你将 roomnumber
添加为 string
(但你检查它是否在 ListView .Items
作为 int
)。您的 if
语句应该是:
if (!reserveringListView.Items.Cast<ListViewItem>().Any((i) => i.SubItems[5].Text == Convert.ToString(reservation.roomnumber)))
也许我在 SubItems
中弄错了索引。您应该检查一下,如果有错误请发表评论。
关于c# - ListView 的检查包含特定数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41483019/