这个程序很简单,但我似乎不能理解它><
因此,用户必须在第一个文本框中写入条形码,并在第二个文本框中写入产品,然后在单击添加按钮后将这两个保存到数组列表中。则下一部分是搜索栏,其中用户搜索条形码,并且该搜索框下方的标签应当显示条形码的对应产品。
我想我的每一个陈述都有一个错误。我只能在产品文本框中显示现有数据。
请帮助
private void btn_add_Click(object sender, EventArgs e)
{
int barcode = Convert.ToInt32(txt_barcode.Text);
barcodeList.Add(barcode);
string product = txt_product.Text;
productList.Add(product);
MessageBox.Show("saved");
}
private void txt_search_TextChanged(object sender, EventArgs e)
{
try
{
int barcodeSearch = Convert.ToInt32(txt_search.Text);
for (int count = 0; count < barcodeList.Count; count++)
{
foreach (int barcode in barcodeList)
{
if (barcodeSearch == barcode)
{
foreach (string product in productList)
{
lbl_product.Text = "" + product;
}
}
}
}
} catch (Exception ex)
{
}
}
2条答案
按热度按时间9nvpjoqh1#
你试图从一个基于其他无序列表的无序列表中检索一个项目。您可以使用索引来实现这一点,但这是笨拙、复杂和容易出错的。
我建议使用
Dictionary
,它存储基于key
的项目,因此您可以轻松检索它们。添加到它:
并检索它:
不需要在多个列表上循环,并且还可以避免使用双键的潜在问题。
请注意,我还删除了不必要的
int
转换。如果你收到一个字符串,为什么不把它存储为一个字符串?如果它需要是一个整数,你应该验证它是一个整数,而不是盲目地转换它。如果您尝试将“123 AB”或“Foo”转换为int
,会发生什么?这将如何影响您的搜索结果?;)uwopmtnx2#
首先,在对数据执行任何操作之前,您总是需要验证用户输入。
如果用户在您的
TextBox
中输入任何非数字值,则会抛出错误你可以这样做:
请记住,条形码值并不总是数字,因此真实的世界的场景很可能会要求字符串值。
我看不出有什么好的理由将
Product
和Barcode
值分开。创建一个简单的类作为你的模型,像这样:然后,当你填写
Collection
时,你可以这样做:然后,您可以通过遍历产品列表来搜索整个产品,如下所示:
你可以这样调用这个方法: