Silverlight中文本框添加回车事件后,换行无法清除的解决方法
在开发Silverlight的项目中,为了更好的用户体验,我们常要给一些控件添加一些快捷键。然而,在Silverlight中当用户回车提交后,光标停留在文本框的第二行怎么也清除不掉,经过一段时间研究,终于找到解决方法,特写此文章与大家分享一下:
有时候我们在网站中,比如用户评论,添加一个回车键盘事件,快速提交,需要给文本框添加键盘事件处理方法,在这里先说一下组合键的使用方法,代码如下:
private void txtToSend_KeyDown(object sender, KeyEventArgs e)
{
ModifierKeys keys = Keyboard.Modifiers;
if (keys == ModifierKeys.Control && (e.Key == Key.Enter))
{
处理方法
}
}
这里主要需要注意的是ModifierKeys,这里与WinForm中不同。
在Silverlight中,给文本框添加了回车提交事件后,但是回车过后,清除文本框内容,发现光标停留在文本框第二行,在后台用代码怎么也清除不掉,下面来讲一下解决办法:
设置文本框的 AcceptsReturn 为 False ,这一文本框就不会再换行啦!
但是,新的问题来了,文本框的内容怎么换行呢?当然我们想到了使用Ctrl + Enter 来换行,实现代码如下:
private void txtToSend_KeyDown(object sender, KeyEventArgs e)
{
ModifierKeys keys = Keyboard.Modifiers;
if (keys == ModifierKeys.Control && (e.Key == Key.Enter))
{
txtToSend.Text += Environment.NewLine;
}
}
运行后,却发现并不能实现换行,只是光标移动到了开头,解决办法就是添加下面一行代码:
txtToSend.SelectionStart = txtToSend.Text.Length;
使用这句话,设置光标的位置,这样就可以看到效果了。当然我们还有实现回车提交信息的功能。
完整代码如下:
private void txtToSend_KeyDown(object sender, KeyEventArgs e)
{
ModifierKeys keys = Keyboard.Modifiers;
if (keys == ModifierKeys.Control && (e.Key == Key.Enter))
{
txtToSend.Text += Environment.NewLine;
txtToSend.SelectionStart = txtToSend.Text.Length;
}
else
{
if (e.Key == Key.Enter)
{
radButton1_Click(null, null);
}
}
}
注意,当你按下Ctrl + Enter 时,同样会触发Enter事件,所以要把Enter的处理方法放在Else里面,这样就没有问题了。
当然,为了更好的用户体验,我们可以添加一个下拉框,让用户选中自己的操作方式,选中快捷键的功能,这里写两个键盘处理事件,代码如下:
private void txtToSend_KeyDown2(object sender, KeyEventArgs e)
{
ModifierKeys keys = Keyboard.Modifiers;
if (keys == ModifierKeys.Control && (e.Key == Key.Enter))
{
radButton1_Click(null, null);
}
} private void txtToSend_KeyDown(object sender, KeyEventArgs e)
{
ModifierKeys keys = Keyboard.Modifiers;
if (keys == ModifierKeys.Control && (e.Key == Key.Enter))
{
txtToSend.Text += Environment.NewLine;
txtToSend.SelectionStart = txtToSend.Text.Length;
}
else
{
if (e.Key == Key.Enter)
{
radButton1_Click(null, null);
}
}
}
然后,在下拉框的SelectionChanged事件中添加如下代码:
private void cmbHotKey_SelectionChanged(object sender, Telerik.Windows.Controls.SelectionChangedEventArgs e)
{
if (cmbHotKey != null)
{
if (cmbHotKey.SelectedIndex == )
{
txtToSend.KeyDown -= txtToSend_KeyDown;
txtToSend.KeyDown -= txtToSend_KeyDown2;
txtToSend.KeyDown += txtToSend_KeyDown;
txtToSend.AcceptsReturn = false;
}
else
{
txtToSend.KeyDown -= txtToSend_KeyDown;
txtToSend.KeyDown -= txtToSend_KeyDown2;
txtToSend.KeyDown += txtToSend_KeyDown2;
txtToSend.AcceptsReturn = true;
}
}
}
这里要注意的是,页面初始化时,控件能还没有初始化完成,所以要判断一下控件是否为NULL。
Silverlight中文本框添加回车事件后,换行无法清除的解决方法的更多相关文章
- winform中文本框添加拖拽功能
		
对一个文本框添加拖拽功能: private void txtFolder_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataP ...
 - dev中文本框等获取焦点事件
		
<ClientSideEvents GotFocus="GotFocus" /> editContract.SetFocus()//设置文本框等的焦点 function ...
 - HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本 ,请添加处理程序。如果下载文件,请添加 MIME 映射。 IIS站点中添加WCF项目后浏览网站报错解决方法。
		
vs2013 wcf服务 windows10 家庭中文版 上图中的红色没有出现就按照下面的方法做: 按照上图所示勾选. 刷新上图中你的网站,查看上图右边的内容是否出现,如果出现,再次重新浏览网站,看一 ...
 - python开发_tkinter_获取文本框内容_给文本框添加键盘输入事件
		
在之前的blog中有提到python的tkinter中的菜单操作 python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推荐 python开发_tkinter_窗口控件_自 ...
 - 给文本框添加模糊搜索功能(“我记录”MVC框架下实现)
		
步骤: 1.在文本框中输入内容时,触发keyup事件: 2.在keyup事件的处理方法中,通过Ajax调用控制器的方法: 3.在控制器方法中,搜索满足条件的数据,这里分页获取数据,且只取第一页的数据, ...
 - winform中文本框的一些案例
		
项目中经常看到在输入金额时,会加逗号,最近在复习正则表达式,就联系下,界面如下:
 - jquery实时监听某个文本框的输入事件
		
想给页面的的一个文本框添加监听事件 $(function(){ //页面加载完毕后触发事件 $("textarea[name='content']").bind('input pr ...
 - WinForm -- 为TextBox文本框添加鼠标右键菜单
		
WinForm -- 为TextBox文本框添加鼠标右键菜单 1. 新建一个WinForm项目,放置一个TextBox控件 2. 从工具箱拖进来一个ContextMenuStrip 3. 将TextB ...
 - 给tkinter文本框添加右键菜单
		
给tkinter文本框添加右键菜单 需求:直接右键点击使用tkinter创建的文本框是不会弹出菜单的.我们需要实现右键点击tkinter框架下的Entry对象.Text对象后弹出右键菜单可复制.粘贴和 ...
 
随机推荐
- Apizza可以进行本地调试,也可以进行跨域调试,但是需要chrome插件
			
装Apizza Chrome插件 1 1. 进入Apizza官方网站.注册账号,进入控制台,可以看到提示安装chrome插件 2. 进入google app商店,搜索apiano 找到对于插件安装 ...
 - SQL Server 集合处理
			
UNION ALL 返回两个结果集中所有的行,返回结果集中会存在重复行 UNION 返回两个结果集中去重的行,返回结果集中无重复行 INTERSECT 返回两个结果集都有的行,返回结果集中无重复行 E ...
 - HTML5之语义标签
			
在HTML5标准中,新加了几个用于增添页面语义的标签,这些标签有:article.section.nav和aside等.与别的大多数标签不 同,浏览器在解释渲染这些标签的时候仅仅把它作为普通的div块 ...
 - UML类图6种关系的总结
			
http://www.open-open.com/lib/view/open1328059700311.html
 - Linux图片批处理
			
通过imagemagick的convert命令来处理. 将多个图片横向拼接(宽图): convert +append 1.jpg 2.jpg all.jpg #人为指定顺序 convert +appe ...
 - 利用FPGA加速实现高性能计算
			
原文链接 原因:处理器本身无法满足高性能计算(HPC)应用软件的性能需求,导致需求和性能 之间出现了缺口. 最初解决办法:使用协处理器来提升处理器的性能. 协处理器(基于硬件的设计)具有三种能力: 1 ...
 - Swift语法简介(一)
			
或许网络上有很多成型的介绍,我只想写下来留给自己.欢迎批评.开撸! 1.第一个程序,Hello,world!古人云,学会了Hello,world!这门语言你就掌握了一半了. print("H ...
 - 天气预报API(五):城市代码--“新编码”和“旧编码” 对比
			
参考一些博客.文章 来查找 测试 接口,后来发现两套城市编码标准,有点想法,故拿来对比分析. 注:新旧编码是个人主观叫法,只是为了方便称呼,可能有不当之处,请留言更正. 暂且称 中国天气网等网站使用的 ...
 - bond配置
			
Bonding的模式一共有7种: #defineBOND_MODE_ROUNDROBIN 0 (balance-rr模式)网卡的负载均衡模式 #defineBOND_MODE_ACTI ...
 - 未能从程序集“System.ServiceModel, Version=3.0.0.0问题解决
			
在Windows Server 2008中的IIS服务器中部署WCF服务程序时,通过浏览器访问报出如下错误: 未能从程序集“System.ServiceModel, Version=3.0.0.0, ...