实例讲解Silverlight 初始控件如何获得焦点
这个问题本来是在我实际的项目中遇到过的,但这其实是当初项目要求,要求一进入就要使得在用户名那个文字框中聚焦,而不是再用鼠标去点击获得焦点,后来自己费了点时间解决了.本来我没太注意就过去了,没想到在QQ群里也有人问了一样的问题,我想还是写出来,这样大家可以注意一下,可能以后有帮助.
我用一个简单的例子来说明一下吧.
目标:是我要使得在silveright项目中的一个TextBox在不做任何点击操作的同时一开始获得焦点.
xaml:
1 <Grid x:Name="LayoutRoot" Background="White">
2 <TextBox Name="myTextBox" Height="23" HorizontalAlignment="Left"
3 Margin="145,67,0,0" VerticalAlignment="Top" Width="120" />
4 </Grid>
C#:
1 public partial class MainPage : UserControl
2 {
3 public MainPage()
4 {
5 InitializeComponent();
6 this.Loaded += new RoutedEventHandler(MainPage_Loaded);
7 }
8
9 void MainPage_Loaded(object sender, RoutedEventArgs e)
10 {
11 myTextBox.Focus();
12 }
13 }
这里我们调用了Focus()这个方法想要使得这个TextBox获得焦点.但我们运行项目看去,TextBox并没有或得到焦点.
当时我得出的分析:1)可能是方法调用不成功,没有聚焦,2)可能是这个TextBox聚焦了,但是经过运行焦点又聚焦到其他地方了.
于是我把后台做了一下简单的修改.
1 public partial class MainPage : UserControl
2 {
3 public MainPage()
4 {
5 InitializeComponent();
6 this.Loaded += new RoutedEventHandler(MainPage_Loaded);
7 }
8
9 void MainPage_Loaded(object sender, RoutedEventArgs e)
10 {
11 DispatcherTimer timer = new DispatcherTimer();
12 timer.Interval = TimeSpan.FromMilliseconds(5000);
13 timer.Tick += new EventHandler(timer_Tick);
14 timer.Start();
15 }
16
17 void timer_Tick(object sender, EventArgs e)
18 {
19 if (myTextBox.Focus())
20 {
21 MessageBox.Show( "文本框聚焦成功!");
22 }
23 }
24 }
并没有聚焦.
我用一个线程来一直看,结果还是弹出的提示信息都是"文本框聚焦成功!",这样看来这个Focus()方法返回为true是成功的,而且即使是Focus到其他地方,我一直后来还是要聚焦到这个TextBox,应该也是成功的,但我们仍然是看到这文本框没有聚焦,看来我当初上面两个分析是错的.
不知道大家后来发现没有就是我们随便在其他地方点击一下,我们突然发现这个文本框聚焦了,这是怎么回事?
当我们理所当然的一直是认为我建立的是一个silverlight项目,想什么事情都是从silverlight本身的东西去想解决办法,但其实我们去看,这个silverlight其实也是建立在一个aspx页面中的,是一种插件形式存在的,可能插入过flash人就知道,放在页面中的是以一个<object>标签放入的,那么我们就可能会想到是不是当初只是聚焦到了页面上面,而没有聚焦到插件上,于是我们添加一项HtmlPage.Plugin.Focus(); 后面也改成
1 public MainPage()
2 {
3 InitializeComponent();
4 this.Loaded += new RoutedEventHandler(MainPage_Loaded);
5 }
6
7 void MainPage_Loaded(object sender, RoutedEventArgs e)
8 {
9 HtmlPage.Plugin.Focus();
10 myTextBox.Focus();
11 }
成功聚焦.
好了这样我们就发现成功聚焦了,结论是:要想聚焦到silverlight中的控件一定要先聚焦到silverlight这个插件上,我们可以通过鼠标点击到silverlight上使其聚焦.但当我们一开始没有点击就想使其中的控件获得焦点可能就要用到我这个方法了.希望能给大家帮助.
实例讲解Silverlight 初始控件如何获得焦点的更多相关文章
- javascript实现silverlight pivotViewer控件
一时无事,就用js实现了一个silverlight pivotViewer控件来练手. 实现效果: silverlight PivotViewer说明地址:https://msdn.microsoft ...
- silverlight visifire控件图表制作——silverlight 后台方法页面事件
1.返回事件 (1.返回silverlight页面,2.返回web页面) private void button_ClickBack(object sender, RoutedEventArgs e) ...
- silverlight visifire控件图表制作——silverlight 后台方法ControlChart.xaml.cs
一.构造方法ControlChart 1.前台页面控件赋值 //时间下拉框赋值,下拉框赋选定值 for (int ii = DateTime.Today.Year; ii ...
- Silverlight第三方控件专题
原文http://www.cnblogs.com/nasa/archive/2008/12/01/1344927.html 这里我收集整理了目前网上silverlight第三方控件的专题,若果有所遗漏 ...
- Bootstrap历练实例:表单控件大小
表单控件大小 您可以分别使用 class .input-lg 和 .col-lg-* 来设置表单的高度和宽度. 实例: <!DOCTYPE html><html><hea ...
- 非常精彩的Silverlight 2控件样式
概述 大家是否觉的现在Silverlight 2提供的默认的控件不能满足自己的要求?好在Silverlight的控件可以运用皮肤,微软Silverlight控件的设计者的主管Corrina开发了几套非 ...
- Silverlight之控件应用总结(二)(4)
[置顶] Silverlight之控件应用总结(二)(4) 分类: 技术2012-04-03 22:12 846人阅读 评论(0) 收藏 举报 silverlightradiobuttonhyperl ...
- [置顶] Silverlight之控件应用总结(一)(3)
[置顶] Silverlight之控件应用总结(一)(3) 分类: 技术2012-04-02 20:35 2442人阅读 评论(1) 收藏 举报 silverlightradiobuttondatat ...
- [WPF] 让第一个数据验证出错(Validation.HasError)的控件自动获得焦点
1. 需求 在上一篇文章 <在 ViewModel 中让数据验证出错(Validation.HasError)的控件获得焦点>中介绍了如何让 Validation.HasError 的控件 ...
随机推荐
- GridView创建菜单栏
GridView(网格视图)可以用来做九宫图.表格(行列)的视图,因其是网格状的,不用去调整权重,而且单个item可以自定义,因此也可以用来创建菜单栏(图标加文字形式),布局就一个GridView. ...
- es6问答
1. 箭头函数的特点 *箭头函数this的指向是定义时所在的对象,而不是使用时所在的对象: * 箭头函数不能做构造函数 * 不能使用argument对象 *不能使用yield命令 2.let cons ...
- 2019.3.15 关于IE
1. .clearfix {zoom:1} zoom:1 是ie浏览器专有属性 它可以设置或检索对象缩放比例 处理ie的hasLayout属性 清除浮动 清除margin的重叠
- 将文件转换成byte[]数组
代码 /// <summary> /// 将文件转换成byte[] 数组 /// </summary> /// <param name="fileUrl&quo ...
- C#使用MiniDump捕获异常
c/c++语言里MiniDump是一个重要的调试手段,他们没有C#/java这样语言有很多异常输出信息( JVM异常导出bug日志功能,通常在jdk目录,文件格式hs_err_%pid%.log,pi ...
- txt写入时报错出现:正由另一进程使用,原来是多此一举的操作
//if (!File.Exists(newfilepath + "\\" + name + num + ".txt")) //{ // File.Create ...
- 1N - 计算球体积
根据输入的半径值,计算球的体积. Input 输入数据有多组,每组占一行,每行包括一个实数,表示球的半径. Output 输出对应的球的体积,对于每组输入数据,输出一行,计算结果保留三位小数. Sam ...
- poj 2777(线段树+lazy思想) 小小粉刷匠
http://poj.org/problem?id=2777 题目大意 涂颜色,输入长度,颜色总数,涂颜色次数,初始颜色都为1,然后当输入为C的时候将x到y涂为颜色z,输入为Q的时候输出x到y的颜色总 ...
- Cookie 和 Session 的区别和联系?session的生命周期?多个服务器部署session的管理?
一.session 和 cookie 1.cookie Cookie会根据响应报文里的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie.当下次客户端再向服务端发起请求时,客户端会 ...
- Jsonpath的基本使用
JSONPath - 是xpath在json的应用. xml最大的优点就有大量的工具可以分析,转换,和选择性的提取文档中的数据.XPath是这些最强大的工具之一. 如果可以使用xpath来解析js ...