时间:2016-02-16 01:21 来源: 我爱IT技术网 作者:佚名
欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【silverlight2.0Beta版TextBox输入中文解决方法】,下面是详细的讲解!
silverlight2.0Beta版TextBox输入中文解决方法
using System.Windows;
using System.Windows.Controls;
namespace TextBoxEx
{
public class TextBoxEx:TextBox
{
#region 属性
private string _OldText="";
private int _RecSelectStart=0;
private int _RecSelectLength=0;
#endregion
public TextBoxEx()
{
TextChanged +=new TextChangedEventHandler(TextBoxEx_TextChanged);
SelectionChanged +=new RoutedEventHandler(TextBoxEx_SelectionChanged);
}
void TextBoxEx_SelectionChanged(object sender, RoutedEventArgs e)
{
TextBox _sender=sender as TextBox;
if (_sender==null)
return;
if (_sender.SelectionLength > 0)
{
//recode user select position
_RecSelectLength=_sender.SelectionLength;
_RecSelectStart=_sender.SelectionStart;
}
else
{
_RecSelectLength=0;
}
}
void TextBoxEx_TextChanged(object sender, TextChangedEventArgs e)
{
TextBox _sender=sender as TextBox;
if (_sender==null)
return;
string textIfnor=_sender.Text;
#region 除去先中部份
if (_RecSelectLength !=0)
{
_OldText=_OldText.Substring(0, _RecSelectStart) + _OldText.Substring(_RecSelectStart + _RecSelectLength, _OldText.Length - _RecSelectStart - _RecSelectLength);
_RecSelectLength=0;
}
#endregion
int LengthAdd=textIfnor.Length - _OldText.Length;
if (LengthAdd <=0)
{
_OldText=_sender.Text;
//这种情况是删除数据
return;
}
else if (LengthAdd % 2==0)
{
//如果当前是成双的情况下
//得到当前字符串
string AddInfor=textIfnor.Substring(_sender.SelectionStart - LengthAdd, LengthAdd);
if (!AddInfor.Substring(0, AddInfor.Length / 2).Equals(AddInfor.Substring(AddInfor.Length / 2)))
{
_OldText=_sender.Text;
return;
}
//得到实际新增值
AddInfor=AddInfor.Substring(0, AddInfor.Length / 2);
//得到实际理论值
string DealText=textIfnor.Substring(0, _sender.SelectionStart - LengthAdd) + AddInfor + textIfnor.Substring(_sender.SelectionStart, textIfnor.Length - _sender.SelectionStart);
int RecodeSelectSTart=_sender.SelectionStart - LengthAdd / 2;
_sender.SelectionStart=0;
_sender.Text=DealText;
_sender.SelectionStart=RecodeSelectSTart;
_OldText=DealText;
}
else
{
_OldText=_sender.Text;
}
}
}
}
关于silverlight2.0Beta版TextBox输入中文解决方法的用户互动如下:
相关问题:
答: >>详细
相关问题:
答: >>详细
相关问题:
答: >>详细
- 【asp】asp.net url重写浅谈-net-url重写
- 【DataSet】DataSet、DataTable、DataRow区别详解
- 【asp】asp.net 动态添加多个用户控件-net-动态添
- 【ASP】ASP.NET中内嵌页面代码的一个问题-NET-内
- 【As】Asp.net中的页面乱码的问题-sp--pn-ne-et
- 【增加记录】asp.net中获取新增加记录的ID Access
- 【创建】ASP.NET Web API教程 创建域模型的方法详
- 【Asp】Asp.net 页面调用javascript变量的值-net-
- 【ASP】ASP.NET 5升级后如何删除旧版本的DNX-NET5
- 【404页面】ASP.NET设置404页面返回302HTTP状态码
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
