- 浏览: 648931 次
- 性别:
- 来自: 石家庄
文章分类
最新评论
-
abao1:
老贾 在安装IDEA的过程中,在激活步骤时,按如下操作即可: ...
IntelliJ IDEA 2016注册方法和注册码 -
bo_hai:
./usr/bin/java: symbol lookup ...
jmagick安装步骤 -
wxcking:
不错的, 收藏一下
JAVA使用POI生成Excel文件 -
zgyfh:
大哥,密码是多少啊?zgyfh@tom.com谢谢了!新手学习 ...
WPF做的必备示例 -
记忆无泪:
jiasongmao 写道你的邮箱是多少,我可以发源代码到邮箱 ...
WPF做的必备示例
silverlight项目中要求界面全键盘操作,并且在光标移动到ComboBox时,下拉框要自动展开。原有的一个类无法实现光标移动到ComboBox时下拉框要自动展开,所以修改了一下,算是能满足要求了。
代码如下:
public class EnterToTab { private static List<Type> _ctrlTypes = new List<Type>() { typeof(TextBox), typeof(PasswordBox), typeof(CheckBox), typeof(ComboBox), typeof(Button), typeof(DropDown), typeof(DatePicker), typeof(AutoCompleteBox), typeof(HyperlinkButton), typeof(MaskedEdit), }; public static void RegisterType(Type type) { if (!_ctrlTypes.Contains(type)) { _ctrlTypes.Add(type); } } public static IEnumerable<T> FindChildren<T>(DependencyObject parent) where T : class { var count = VisualTreeHelper.GetChildrenCount(parent); if (count > 0) { for (var i = 0; i < count; i++) { var child = VisualTreeHelper.GetChild(parent, i); var t = child as T; if (t != null) yield return t; var children = FindChildren<T>(child); foreach (var item in children) yield return item; } } } private UIElement _parent; private List<Control> _controls = new List<Control>(); public EnterToTab(UIElement parent) { _parent = parent; // 如果控件还没有加载完就调用 Associate() 方法,则不能查找到子控件, // 所以用定时器 DispatcherTimer timer = new DispatcherTimer(); timer.Interval = TimeSpan.FromTicks(100); timer.Tick += new EventHandler(Timer_Tick); timer.Start(); } void Timer_Tick(object sender, EventArgs e) { (sender as DispatcherTimer).Stop(); Associate(); } private bool _isAssociating = false; private void Associate() { if (_isAssociating) return; _isAssociating = true; try { // 清除原来关联过的 foreach (var c in _controls) { c.KeyUp -= new KeyEventHandler(Control_KeyUp); } _controls.Clear(); // 获取可以 Tab 的控件并加入到列表中 IEnumerable<Control> originals = EnterToTab.FindChildren<Control>(_parent); foreach (var c in originals) { if (c.IsTabStop && c.Visibility == Visibility.Visible && c.IsEnabled) { var t1 = c.GetType(); foreach (var t2 in _ctrlTypes) { if (t1.IsAssignableFrom(t2)) { c.KeyUp += new KeyEventHandler(Control_KeyUp); _controls.Add(c); break; } } } } // 根据 TabIndex 的原始值排序 _controls.Sort(new TabIndexComparer()); } finally { _isAssociating = false; } } void Control_KeyUp(object sender, KeyEventArgs e) { if (e.Key == Key.Enter) { Control source = (sender as Control); int index = _controls.IndexOf(source); if (e.Key == Key.Enter) { if (index < _controls.Count - 1) { if (source is DropDown) { DropDown dropDown = source as DropDown; dropDown.IsOpen = false; } _controls[index + 1].Focus(); if (_controls[index + 1] is ComboBox) { ComboBox nextCB = _controls[index + 1] as ComboBox; nextCB.IsDropDownOpen = true; } if (_controls[index + 1] is DropDown) { DropDown nextDropDown = _controls[index + 1] as DropDown; nextDropDown.IsOpen = true; } } } } } private class TabIndexComparer : IComparer<Control> { public int Compare(Control x, Control y) { if (x == y) { return 0; } if (x.TabIndex <= y.TabIndex) { return -1; } else { return 1; } } } }
发表评论
-
silvelright酷站
2011-03-22 18:47 775http://completit.com/# -
silverlight翻转代码
2011-03-13 18:46 1073using System; using System.Net ... -
silverlight独立存储示例
2011-03-07 17:17 1019void CreateDir(string dirNam ... -
silverlight SDK和toolit中控件英文如何转换为英文
2010-11-11 15:50 960解决方法: 设置 ... -
Silverlight4:网络地图服务
2010-10-16 11:01 1530Bing Maps与Google Earth一样 ... -
通过JS创建silverlight对象
2010-10-12 13:04 1599前言: 对于我们开发的silverlight应用来讲,有的时 ... -
silverlight childwindow源码
2010-09-18 21:17 1936<!-- // (c) Copyright Micro ... -
精彩的 Silverlight 开源项目
2010-08-18 14:32 2890Silverlight 物理模型 http://www.c ... -
MEF程序设计指南五:迟延(Lazy)加载导出部件(Export Part)与元数据(Metadata)
2010-08-12 10:34 898本文章非原创,转载自: 作 者:Beniao 文 ... -
MEF程序设计指南四:使用MEF声明导出(Exports)与导入(Imports)
2010-08-12 10:03 571本文章非原创,转载自: 作 者:Beniao 文 ... -
MEF程序设计指南三:MEF中组合部件(Composable Parts)与契约(Contracts)的基本应用
2010-08-12 09:52 507本文章非原创,转载自: 作 者:Beniao 文 ... -
MEF程序设计指南二:Silverlight中使用CompositionInitializer宿主MEF
2010-08-12 09:24 823本系列文章非原创,转载自: 作 者:Beniao ... -
MEF程序设计指南一:在应用程序中宿主MEF
2010-08-12 09:17 986本系列文章非原创,转 ... -
silverlight应用程序库缓存
2010-08-10 14:22 1468应用程序库缓存可在用户重新访问网站时帮助改善启动性能。 ... -
Prism动态模块加载
2010-08-10 10:27 1548这篇介绍模块在silverlight的特殊应用. sil ... -
Silverlight中Json数据的转换方法(中文)
2010-08-04 11:36 1207[DataContract] public clas ... -
silverlight万花筒效果
2010-07-28 16:14 834见附件。 -
silverlight如何将颜色字符串转换为颜色
2010-07-02 10:42 1502public class ColorUtil { ... -
在两个Silverlight应用间数据通信(包括与Flash通信)
2010-05-13 17:06 973声明:该博文转载自:http://daizhj.blog.51 ... -
silverlight和js相互调用
2010-05-13 16:56 1629步骤一:在silverlight后台代码类中声明被js调用的方 ...
相关推荐
silverlight 中实现拖动的扩展方法
本程序主要是实现了两个图表控件向四个方向翻转的效果. 开发环境:vs2010,silverlight 4,blend 4。
silverlight 实现比较复杂的统计表头
详细介绍Silverlight 项目在多种不同的服务器中部署方法详解
Silverlight Filter实现
大家知道网页里面google 再输入了一个关键字之后直接点击enter按钮便会自动查询,而在Silverlight里面是不会自动支持的,但是利用下面的behavior只需要从blend中拖动一下就可以无编码自动支持了,废话少说,直接上代码,...
Silverlight调用WebBrowser中HTML的JavaScript方法.
silverlight+Wcf实现登录silverlight+Wcf实现登录
Silverlight实现的登陆注册翻转 数据库没加 太大了:)
Silverlight实现的图片放大效果
silverlight视频 sl视频聊天 视频聊天 采集自银光论坛中的资源,一个蛮不错的视频聊天Demo,方便初学者作参考用``
flash转silverlight工具,部分需要破解
方法一:下载Windows Installer clean up工具并安装 在开始菜单中打开它并找到与silverlight相关的项目 将其删除 完成后重新启动计算机 再次安装Microsoft Silverlight并尝试更新 ">情况一及解决方法: ...
ArcGIS Server for Silverlight 经纬度定位实现方法之一,Geometry服务的Project方法实现。
Silverlight实现拖放功能 源代码下载
使用C#语言,利用silverlight技术实现的仪表盘。表盘界面美观,实现了使用数据库中数据驱动表盘指针的旋转,而且实时显示当前数据。
SilverLight学习笔记--Silverlight之数据校验的实现
这是一个Silverlight 2.0实现的三维旋转立方体
一个基于Silverlight2+ASP.NET实现的多文件(大文件)上传程序源码例子
使用silverlight3.0做的一个旋转主界面!