我正在为课堂做一些功课,并决定添加一些额外的东西,让我有点困惑。我尝试了各种比较方法,但似乎都没有,但我不明白为什么。
基本上,当订单添加到系统时,它会创建类'OrderInfo'的实例,并将其添加到ArrayList。在我的代码中,我使用foreach()循环来查找与它们单击的ListBox中的哪个条目匹配的类实例,但是出了点问题。
private void ordersListBox_DoubleClick(object sender, EventArgs e)
{
if (ordersListBox.SelectedItem != null)
{
foreach (OrderInfo i in ordersList)
{
if (String.Compare(i.GetClientName(), ordersListBox.ToString(), true) == 0)
{
MessageBox.Show(i.GetClientName());
break;
}
}
}
}
答案 0 :(得分:4)
而不是
if (String.Compare(i.GetClientName(), ordersListBox.ToString(), true) == 0)
试
if (String.Compare(i.GetClientName(), ordersListBox.SelectedValue.ToString(), true) == 0)
答案 1 :(得分:0)
对于字符串比较,最好使用Equals()方法。
private void ordersListBox_DoubleClick(object sender, EventArgs e)
{
if (ordersListBox.SelectedItem != null)
{
foreach (OrderInfo i in ordersList)
{
if (i.GetClientName().Equals(ordersListBox.ToString()))
{
MessageBox.Show(i.GetClientName());
break;
}
}
}
}
答案 2 :(得分:0)
String.Compare
返回一个数字,而不是布尔值
数字将为正数,负数或零,具体取决于字符串的相对字母顺序。
您应该致电String.Equals
,然后通过StringComparison.OrdinalIgnoreCase
。
答案 3 :(得分:0)
我怀疑你真的想将ordersListBox的字符串表示与一些合理的字符串进行比较。
任何对象的 ToString()的默认实现是输出实例类型的名称。 ordersListbox最有可能就是这样做的。您需要咨询SelectedValue。
答案 4 :(得分:0)
你也可以试试这个。
if (String.Compare(i.GetClientName(), ordersListBox.SelectedValue.ToString(), StringComparison.InvariantCultureIgnoreCase) == 0)
{
MessageBox.Show(i.GetClientName());
break;
}