c# - 无法将 TextBox 文本更改为包含两位小数
问题描述
我有一个 TextBox,在 LostFocus 上我运行一个函数,将值转换为末尾有两个零的小数。(例如,192 变为 192,00)。
xaml 中的文本框:
<TextBox x:Name="AmountGross"
Text="{Binding AmountGross, StringFormat='0.00',
UpdateSourceTrigger=PropertyChanged,
ValidatesOnExceptions=True,
ValidatesOnDataErrors=true,
NotifyOnValidationError=true}"
GotKeyboardFocus="TextBoxGotKeyboardFocusHandler"
TextChanged="TextBoxTextChangedHandler"
PreviewKeyUp="DEFixedButtonPreviewKeyUpHandler"
HorizontalContentAlignment="Right" LostFocus="TextBoxLostFocus" >
</TextBox>
和 TextBoxLostFocus 代码:
if (cell.Text != "")
{
decimal value = -1;
if (decimal.TryParse(cell.Text, out value))
{
string a = string.Format("{0:N}", Convert.ToDecimal(value)); //THIS LINE CONVERTS IT TO 192,00
cell.Text = a.ToString().Replace(".", ""); //HERE THE CELL.TEXT IS 192
}
}
转换(192 到 192,00)效果很好,但是当我将 Text 分配给 TextBox 时,它会变为整数(192)。
编辑: a 变量是正确的(55,00)。当它被分配给 cell.Text 然后它删除逗号分隔符,它变成:(5500)。 var A cell.Text
为什么会发生这种情况,我该如何避免这种情况?
解决方案
它可能从“AmountGross”属性中获取数据类型,因此如果它是 int 文本框,则将此类型作为默认数据类型,尝试将属性类型更改为十进制。
推荐阅读
- ios - AR 在我的 iOS 14 和 Xcode 12.3 上的 iOS 应用程序中无法正常工作,世界跟踪性能受到资源限制的影响
- flash - 如何在 IBM Datastage Hierarchical Data 中替换 Flash
- python - Scray shell URL 返回 404 进行无限滚动
- android - 使用底部导航片段仅调用一次 API
- linux - 在 docker 下使用来自 Perl 的 capget syscall 和 capsh --drop=cap_sys_admin
- javascript - 使用多种变体过滤 MongoDB 集合
- javascript - 寻找任何替代状态管理工具来做出反应,而不是 redux
- python - 在 Python 中编写带有标题的阿拉伯语 rtf 文件
- ms-access - MS Access - 在查询中使用多选
- google-apps-script - Google App Scripts 在不变形的情况下删除重复项