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 ...
随机推荐
- <c:if>标签的使用-流程控制标签
<c:if>标签必须要有test属性,${ }表达式为ture,则执行body内容;否则不执行. 原始代码: <c:if test="${all == 1}"&g ...
- IOS中CoreData浅析
CoreData简介: 什么是CoreData? Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中, ...
- uva-327
题意:给出一个C语言加减法表达式,求出这个表达式的最终结构,以及各个变量的值,每个变量保证至出现一次,保证输入的字符串合法: 输入:一串包含+.-和小写的26个英文字母: 输出:表达式的结果,以及表达 ...
- shell脚本调试
转自:http://www.ibm.com/developerworks/cn/linux/l-cn-shell-debug/ 一. 前言 shell编程在unix/linux世界中使用得非常广泛,熟 ...
- hdu2604(递推,矩阵快速幂)
题目链接:hdu2604 这题重要的递推公式,找到公式就很easy了(这道题和hdu1757(题解)类似,只是这道题需要自己推公式) 可以直接找规律,推出递推公式,也有另一种找递推公式的方法:(PS: ...
- Linux环境下解压超过4GB的zip文件
今天在Linux服务器中解压一个zip的压缩包,提示如下错误信息: [root@appsrv01 ZIP_BCSA_COURSES]# unzip BCSA_MEDIAS_BAK_20161118.z ...
- 如何编译MongoDB?
本文将在Linux环境下编译Mongodb. 您可以选择已经编译好的版本直接使用,也可以尝试自己编译.https://www.mongodb.org/downloads#production 官方 ...
- windows下与linux下安装redis及redis扩展
1. Redis的介绍 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起 ...
- PHP版微信公共平台消息主动推送,突破订阅号一天只能发送一条信息限制
2013年10月06日最新整理. PHP版微信公共平台消息主动推送,突破订阅号一天只能发送一条信息限制 微信公共平台消息主动推送接口一直是腾讯的私用接口,相信很多朋友都非常想要用到这个功能. 通过学习 ...
- crtmpserver系列(一):流媒体概述
概述 所谓流媒体按照字面意思理解就是像流一样的媒体,看起来像是废话.流媒体现在司空见惯,所以一般人大概不会有疑问.事实上在流媒体还没有出现的时候,基本上通过网络播放电影就不太现实.通过网络播放电影的时 ...