Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在VB.Net中使文本框绑定到双接受点_Vb.net_Binding_Textbox_Double - Fatal编程技术网

在VB.Net中使文本框绑定到双接受点

在VB.Net中使文本框绑定到双接受点,vb.net,binding,textbox,double,Vb.net,Binding,Textbox,Double,我有一个VB.Net格式的文本框绑定到一个Double。 问题是,在绑定验证时,它会将数字从“11.7”更改为“117”,因为双重转换不接受点 如何在不将点更改为逗号的情况下解决此问题?您需要设置正确的小数点分隔符,以便框架能够知道正确的小数点分隔符 Imports System.Threading Imports System.Globalization 在启动表单的构造函数(Sub-New)中添加以下代码 Dim ci As New CultureInfo("it-IT") ci.Num

我有一个VB.Net格式的文本框绑定到一个Double。
问题是,在绑定验证时,它会将数字从“11.7”更改为“117”,因为双重转换不接受点


如何在不将点更改为逗号的情况下解决此问题?

您需要设置正确的小数点分隔符,以便框架能够知道正确的小数点分隔符

Imports System.Threading
Imports System.Globalization
在启动表单的构造函数(Sub-New)中添加以下代码

Dim ci As New CultureInfo("it-IT")

ci.NumberFormat.NumberDecimalSeparator = "."

Thread.CurrentThread.CurrentCulture = ci
Thread.CurrentThread.CurrentUICulture = ci
以下是您可以找到的文化代码列表:

编辑

另一种方法是订阅绑定的事件

Dim b As New Binding("Text", TheDataSource, "TheDoubleField")

AddHandler b.Parse, Sub(s As Object, e As ConvertEventArgs) e.Value = CStr(e.Value).Replace(".", ",")

Me.TextBox1.DataBindings.Add(b)

实际上,这样它接受了我的点,但我需要知道还有什么其他含义。如果我使用我的文化代码,它只接受逗号,但如果我继续使用en-US,我想我可能会遇到一些问题。日期呢?这种文化会改变其他行为吗?@DkSw始终使用与您所在地区对应的
cultureinfo
。我提供了另一种解决方案。请参阅我的编辑。我设置了全球化的副本并更改了小数分隔符:Thread.CurrentThread.CurrentCulture=New CultureInfo(“it”)Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator=“”。一切似乎都正常。这是一个合适的解决方案吗?我是否遗漏了任何可能导致应用程序返回任何错误的内容?这应该足够了。请注意,
.netframework
使用
Thread.CurrentThread.CurrentCulture
作为默认设置(如果没有提供其他设置)。因此,如果现在执行
1.2#.ToString()
,它将返回
1.2
,而不是
1,2
。我看不出有任何问题(目前xD)。非常感谢你的帮助!如果你用我们提出的解决方案编辑你的帖子,我会接受它作为答案。