答案可能很简单,但下面是我的代码,我只是试图根据值设置ListBox选择。当值有效时,它可以正常工作。
try { Categories.SelectedValue = catString; }
catch (ArgumentOutOfRangeException ex) { MessageBox.Show("Out of range!"); }
如果catString
值不存在,则不显示任何文本框提醒,我收到错误消息:
System.ArgumentOutOfRangeException:' Categories'有一个SelectedValue 这是无效的,因为它不存在于项目列表中。 参数名称:值
我一直试图抓住Exception
,也尝试将SelectedValue
设置为已知值,但在错误发生之前它还没有达到目标。实际的ListBox确实设置了defaultvalue。为什么不尝试赶上工作?
谢谢!
答案 0 :(得分:1)
这是因为您设置所选值不是检查参数是否超出范围的实际点。这发生在ListBox
内。您只是将属性设置为文本值。设置它时不会抛出实际的异常,但是当ListBox
尝试在以后通过参数进行索引时抛出它。我不确定如何捕获该异常,但避免它的一般方法是永远不要让SelectedValue
成为首先不在ListBox
中的值。仅将SelectedValue
设置为已知在ListBox
。
如果所选值不在可用值列表中并且执行了回发,则抛出ArgumentOutOfRangeException异常。以下示例显示如何在回发之前捕获无效值:
this.DropDownList1.Items.Add(new ListItem{ Text="Hello", Value="1" });
if(DropDownList1.Items.FindByValue("2") != null) {
Response.Write("Found");
}