WPF中TextBox绑定Double类型数据,TextBox.Text属性不显示空格,光标也不对

问题描述

最近学习WPF遇到一个郁闷的问题:我在前台的TextBox的Text属性绑定了后台一个Double类型的数据,mode=TwoWay,UpdateSourceTrigger=PropertyChanged,这样前台数值变更就会通知到后台,但是存在一个问题,如果我在数字前端或者末尾不停的输入空格,后台绑定的内容还是原来的数值不变,但是前台的空格确实存在。在后台取值时,我需要判断光标的位置是否已经是末尾了,如果使用tbPositionCursor.Select(tbPositionCursor.Text.Length,0);

此种方式就会出现问题,tbPositionCursor.Text的值是不包含空格的,形如文本框内容为“123”,Text值却是“123”,且Length为3而不是8,请教如何才能判定光标已经到达末尾?

解决方案

解决方案二:
使用stringFormat限定输入数据格式
解决方案三:
为什么光标必须在末尾?我输入1234,发现少输入了一个3,输入的是124,然后我光标放到中间,输入个3,这时候你不让我提交,必须先把光标放到末尾才让提交??
解决方案四:
至于多出空格,那是另一个问题,参考1楼
解决方案五:
引用2楼Z65443344的回复:

为什么光标必须在末尾?我输入1234,发现少输入了一个3,输入的是124,然后我光标放到中间,输入个3,这时候你不让我提交,必须先把光标放到末尾才让提交??

我需要判断光标是否到达文本框末尾,如果到达末尾,那么用户按下右箭头就会切换至下一个文本框。
解决方案六:
其实你可以判断用户输入的如果是回车,就切换到下一个文本框,或者用户按tab键,也会自动切换到下一个文本框(这功能不用你自己实现),按右箭头切换,其实用户体验并不好,一不小心就多按了一次,然后就跑了
解决方案七:
引用1楼duanzi_peng的回复:

使用stringFormat限定输入数据格式

试了一下,使用stringformat无法滤除空格,因为Text属性是没有空格的“123”,但是文本框中显示的是包含空格的“123”
解决方案八:
引用5楼Z65443344的回复:

其实你可以判断用户输入的如果是回车,就切换到下一个文本框,或者用户按tab键,也会自动切换到下一个文本框(这功能不用你自己实现),按右箭头切换,其实用户体验并不好,一不小心就多按了一次,然后就跑了

主要是面向的用户群的使用习惯,他们希望DataGrid的操纵习惯和Excel相同,通过方向键切换焦点。

时间: 2024-10-22 01:57:37

WPF中TextBox绑定Double类型数据,TextBox.Text属性不显示空格,光标也不对的相关文章

WPF中Listbox绑定dataset后怎么在每个ListboxItem里面显示行号

问题描述 //......varsqlCon=newSystem.Data.SqlClient.SqlConnection();sqlCon.ConnectionString=connstr;sqlCon.Open();varsqlcmd=newSystem.Data.SqlClient.SqlCommand(selectstr);sqlcmd.Connection=sqlCon;varrds=newSystem.Data.SqlClient.SqlDataAdapter(sqlcmd);var

WPF中xaml与xml交换数据时设计器中有数据,但运行后没有,为什么额?

问题描述 WPF中xaml与xml交换数据时设计器中有数据,但运行后没有,为什么额? 4C 在项目中创建了一个新的窗口叫window1然后在母窗口的cs文件中设置button按钮点击事件: window1 mywin = new window1(); mywin.show(); 在window1的xaml中绑定了当前目录的一个xml文件,设计器上可以看到绑定之后的数据,但是一旦运行之后,点击button按钮,出现window1的界面就会没有那些绑定的数据,敢问这是怎么回事呢? 谢谢: 其实就是设

关于MYSQL中FLOAT和DOUBLE类型的存储

关于MYSQL中FLOAT和DOUBLE类型的存储 其实在单精度和双精度浮点类型存储中其存储方式和C/C++一致准守IEEE标准他们都是浮点型的,所谓的浮点型,是小数点的位置可变,其能够表示的范围比定点小数要广得多,而存储空间节省,但是受到精度的影响,所以在严格的数据中尽量使用定点小数mysql decimal(m,d)类型,ORACLE压根没有浮点数字类型而是number(p,s)定点小数, float 4字节     1       8      23   符号位   指数位 尾数 doub

怎么样让wpf中前台已存在的控件的属性可以在后台代码中设置

问题描述 怎么样让wpf中前台已存在的控件的属性可以在后台代码中设置 怎么样让wpf中前台已存在的控件的属性可以在后台代码中设置,比如说xaml中已经存在一个border,我想要在后台代码中初始化他的旋转角度 解决方案 这些属性是可以在后台代码中设置的,直接在后台.cs文件里写就是了 解决方案二: 好像不能把,比如说 在后台代码怎么修改Angle属性呢 解决方案三: http://www.cnblogs.com/slowhand/archive/2013/05/13/3076259.html 亲

oracle中字段是date类型,在页面上要显示成'2015-01-14'这样的

问题描述 oracle中字段是date类型,在页面上要显示成'2015-01-14'这样的 查询的时候用了to_char(date,'yyyy-MM-dd'),就报这样的错了 解决方案 可以呀.看看date错了没有 解决方案二: 你用json?如果是的话需要对json序列化时设置时间格式 解决方案三: 在建表的时候就需要进行一个格式化的 解决方案四: 可以在页面上使用格式化标签来显示的嘛 解决方案五: SQL语句是没有问题的,问题可能出现在你的展现层上 解决方案六: 查出来是字符串,转日期..报

基于C++浮点数(float、double)类型数据比较与转换的详解_C 语言

浮点数在内存中的存储机制和整型数不同,其有舍入误差,在计算机中用近似表示任意某个实数.具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学记数法.所以浮点数在运算过程中通常伴随着因为无法精确表示而进行的近似或舍入.但是这种设计的好处是可以在固定的长度上存储更大范围的数.1.将字符串转换为float.double过程存在精度损失,只是float.double各自损失的精度不相同而已std::string str="8.2&

请教double 类型数据的问题!~~~~~~

问题描述 doubled=7/19*24为什么结果是0.0啊???计算器里按出来是8.8......请教一下! 解决方案 解决方案二:可能是这样吧编译器把7和19当作int型进行计算,把结果转化成double类型然后*24你这样:doubled=7.0/19.0*24结果应该是你想要的解决方案三:"/"的结果与被除数和除数的类型有关,7/19*24这样做的结果是int型的这样试下doubled=(double)7/19*24;

WPF中DataGrid绑定Combox如何实现数据动态刷新

问题描述 最近才开始学WPF,用到DataGrid来显示数据,并想通过DataGrid绑定Combox来实现数据交互,最后实现两个Combox进行联动.没想到怎么搞都没能让Combox里面的数据刷新,查了好久都没能解决,希望各位大神帮忙,最后能给出个DEMO!!! 解决方案 解决方案二:在第一个Combobox中的selectionChanged事件中更新另一个的ItemsSource就行了.解决方案三:引用1楼duanzi_peng的回复: 在第一个Combobox中的selectionCha

java中double类型的值如何实现科学计数法

问题描述 java中double类型的值如何实现科学计数法 java中,一个double类型的数值,如何在显示的时候是科学计数法 解决方案 它达到一定的值,就会显示成科学计数格式,当然你可以自己这个格式化方法任意转 解决方案二: 小数位数多了自动科学计数法表示的吧.