在From Design状态下double click一个控件自动弹出的事件是 SelectedIndexChanged 。按道理这个事件可以用于相应用户点击List中的选项,但奇怪的是,我的程序响应这个事件后经常出错,都是系统错误。不巧的是最近家里没有Internet,公司里又太忙,一直没有找出原因。昨天利用长假期的最后一天冒着中蠕虫的危险拨号上网,查找文章又跟踪良久,终于发现原因所在。
跟踪结果表明,这个事件至少在以下几个情况下会被触发:add或者delete List中item的时候,用户点击另一个item的时候会被触发两次,一次是上一个选择消失,一次是新item被选择。在以上情形中,其实只有第三个是我们真正需要的。而前两个情况下由于实际上没有item被选择,如果直接去读取被选项的值就可能会导致系统溢出。所以结论是在使用这个事件时必须首先判断是否有item被选择。
private void SearchList_SelectedIndexChanged(object sender, System.EventArgs e)
{
if (SearchList.SelectedIndices.Count>0)
{
rcode=SearchList.Items[SearchList.SelectedIndices[0]].Text;
rname=SearchList.Items[SearchList.SelectedIndices[0]].SubItems[1].Text;
}
}
由于.NET Compact Framework 只是 .NET Framework的一个子集,所以.NET CF 并不是完全兼容 .NET Framework。ViewList就是一个例子。粗略估计一下,CF中的ViewList只支持大约30%的属性和方法,一些重要的属性没有兼容,例如SelectedItem,而在网上能找到的.NET编程资料大多是使用这个属性及其方法。
随贴广告(测试期)
打印 | 张贴于 2003-09-15 23:42:00 | Tag:暂无标签
留言反馈