SilverLight 控件ListBox中的SelectionChanged事件
出现的问题:
ListBox 中给了它一个这样的事件SelectionChanged="NumBasket_SelectionChanged" 也就是单击某行就会触发的事件,要实现的效果是,单击此行时,此行的信息移除
本以为写这行代码可以实现效果:
'已经选号变动
Private Sub NumBasket_SelectionChanged(sender As System.Object, e As System.Windows.Controls.SelectionChangedEventArgs)
If NumBasket.Items.Count > Then
NumBasket.Items.RemoveAt(NumBasket.SelectedIndex)
'NumBasket.Items.Remove(NumBasket.SelectedItem)
End If
End Sub
事实是,如果只有一行数据的话不会出什么问题,但是如果有两行就抛出异常了,异常为:

问题分析:现在没找到相关的解释,只是看到这个错误提示。。。。
解决方案:
看到别人是这样处理的:
delegate void DeleteSelected(object item);
bool isSysSet = false;
private void NumBasket_SelectionChanged(object sender, RoutedEventArgs e)
{
//if (NumBasket.Items.Count > 0)
//{
// NumBasket.Items.Remove(NumBasket.SelectedItem);
//}
if (isSysSet) return;
DeleteSelected delete = new DeleteSelected(DeleteSelectItem);
Dispatcher.BeginInvoke(delete, NumBasket.Items[NumBasket.SelectedIndex]);
isSysSet = false;
}
void DeleteSelectItem(Object item)
{
if (NumBasket.Items.Count > )
{
isSysSet = true;
NumBasket.Items.Remove(item);
isSysSet = false;
}
}
查看Microsoft文档http://technet.microsoft.com/zh-cn/library/cc190259(v=vs.95).aspx
,对其中的一些代码 Dispatcher.BeginInvoke(delete, NumBasket.Items[NumBasket.SelectedIndex]);的解释是 在与 Dispatcher 关联的线程上异步执行指定的委托。
从解决方案中剖析问题所在:
发现 bool isSysSet = false; 这个变量好像没什么用,可是删除又会报错。。。。╮(╯_╰)╭

为什么感觉这个变量没用呢?我是这样肤浅的分析:
在DeleteSelectItem()方法中
isSysSet = true;
NumBasket.Items.Remove(item);
isSysSet = false;
将变量isSysSet设置为true以后,删除改行后,又立即设置为false了,这个能起到什么作用?也就是说,我想的是 选中某行就触发此事件,而且只有这一个线程。。嗯,现在问题分析出来了
是因为 NumBasket.Items.Remove(item); 这行代码执行时,它也会调用 NumBasket_SelectionChanged()这个事件,所以现在 变量isSysSet 的作用就体现出来了。
SilverLight 控件ListBox中的SelectionChanged事件的更多相关文章
- 在Telerik for silverlight控件radtreeview中如何通过路径得到节点(转载)
页面<telerik:RadTreeView Margin="8" x:Name="radTreeView" SelectionChanged=" ...
- 列表控件ListBox关联的MFC中的类:CListBox
列表控件ListBox关联的MFC中的类:CListBox ######################################################## 1.在列表的结尾添加一项: ...
- 重新想象 Windows 8 Store Apps (16) - 控件基础: 依赖属性, 附加属性, 控件的继承关系, 路由事件和命中测试
原文:重新想象 Windows 8 Store Apps (16) - 控件基础: 依赖属性, 附加属性, 控件的继承关系, 路由事件和命中测试 [源码下载] 重新想象 Windows 8 Store ...
- MFC编程入门之二十四(常用控件:列表框控件ListBox)
前面两节讲了比较常用的按钮控件,并通过按钮控件实例说明了具体用法.本文要讲的是列表框控件(ListBox)及其使用实例. 列表框控件简介 列表框给出了一个选项清单,允许用户从中进行单项或多项选择,被选 ...
- 【WPF】监听WPF的WebBrowser控件弹出新窗口的事件
原文:[WPF]监听WPF的WebBrowser控件弹出新窗口的事件 WPF中自带一个WebBrowser控件,当我们使用它打开一个网页,例如百度,然后点击它其中的链接时,如果这个链接是会弹出一个新窗 ...
- DevExpress控件GridControl中的布局详解 【转】
DevExpress控件GridControl中的布局详解 [转] 2012-10-24 13:27:28| 分类: devexpress | 标签:devexpress |举报|字号 订阅 ...
- VS2010/MFC编程入门之二十四(常用控件:列表框控件ListBox)
前面两节讲了比较常用的按钮控件,并通过按钮控件实例说明了具体用法.本文要讲的是列表框控件(ListBox)及其使用实例. 列表框控件简介 列表框给出了一个选项清单,允许用户从中进行单项或多项选择,被选 ...
- Developer Express控件gridcontrol中gridView的某一个单元格是否可以自由输入
场景:在Developer Express控件gridcontrol中的gridView中,当医生开的临时医嘱的医嘱类型为"中草药","计价总量"单元格不可以自 ...
- 【ExtAspNet学习笔记】ExtAspNet控件库中常见问题
1.在Grid控件中添加CheckBoxField控件,选择一行时,如何获取选择的CheckBoxField所对应记录的唯一标识值? ●解决方案: 在前台Grid控件中, 添加“<ext:Che ...
随机推荐
- JavaSE自学笔记
ch03 [Thu Aug 18 2016 11:22:26 GMT+0800] 对象变量与对象之间是指代关系,对象变量并不能完全说明有无对象可用.这种指代关系是通过赋值运算建立起来的.对象变量保存的 ...
- tail queue代码阅读
tail queue是bdb中用的最多的数据结构. 定义在 src/dbinc/queue.h: 注: TRACEBUF,QMD_TRACE_HEAD等是为了 queue代码的debug, 这里移除出 ...
- ArcGIS线转面的方法
ArcGIS作为GIS软件中的龙头老大,其功能是非常强大的,但是如果作为一个初学者,其部分常用的重要功能不容易掌握,今天就讲一讲在矢量化时非常重要的功能:线转面. ArcGIS在进行大范围的矢量化时一 ...
- linux启动流程
看了深入理解linux内核一书的最后对linux启动流程的介绍,下面就把我能理解的写一下吧: bios(硬件加电自检POST,寻找第一个启动设备) the boot loader(可以从硬盘启动也可以 ...
- debian/ubuntu 下ISE安装
1. planAhead无法打开的问题 原因: debian中使用dash,跟planAhead使用的bash略有不同 解决: 将/bin/sh 的链接从dash改为bash 2. FPGA Edit ...
- JS实现雪花效果
演示效果 http://www.9696e.com/demo/snow/ 春节之前新一博客也会一直挂着的. 加载链接 <script src="http://www.9696e.com ...
- jQuery给标签写入内容
使用原生js时可以用 document.getElementById("divID").innerHTML = "div的显示值" 来赋值: 而在使用jQuer ...
- mysql客户端导入sql文件命令
mysql -h localhost -u root -p dbname < filename
- PL/SQL Developer登入时候报ORA-12638: 身份证明检索失败的解决办法
找到安装目录:C:/oracle/product/10.2.0/db_1/NETWORK/ADMIN 打开sqlnet.ora 在里面找到 SQLNET.AUTHENTICATION_SERVICES ...
- AngularJs学习的前景及优势
一.趋势 互联网未来的发展趋势是前端后端只靠json数据来进行通信.后端只处理和发送一段json数据到前端,然后计算和模板渲染都在前端进行,而前端的改动,形成json数据然后传回到后端.未来趋势就是: ...