【问题标题】:What is the best way to format an edit box that represents a numeric value?格式化表示数值的编辑框的最佳方法是什么?
【发布时间】:2011-09-08 13:02:02
【问题描述】:

在我的 c# 程序中,我有一个非常简单的 DevExpress 编辑框,它表示一个数值。

我想做的是以这样的方式添加对小数位数的限制:

  • 用户不能键入、粘贴或以任何其他方式输入包含超过预定义小数位数的值。我其实只是想编辑框在输入 3 位小数后立即忽略用户的输入。
  • 如果程序员设置了编辑框的文本,则该值将被四舍五入以使其符合要求。

最好的方法是什么?

Ps.:我认为这会解决我的问题:

valueTextEdit.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric;
valueTextEdit.Properties.DisplayFormat.FormatString = "#.000;[#.000];0.000";

但它似乎没有做任何事情。我仍然可以输入 10 位小数的值。同样在代码中,我可以将编辑框文本设置为具有更多小数的值。

【问题讨论】:

  • 尝试设置小数位。

标签: c# winforms formatting devexpress editbox


【解决方案1】:

你需要设置UseMaskAsDisplayFormat = true:

看看herehere

编辑:

很好的例子here

【讨论】:

    【解决方案2】:

    试试这个 .Net的MaskTextBox控件

    您可以使用 MaskedTextBox 在文本框中输入数字格式的数据。

    希望对你有帮助

    谢谢

    【讨论】:

    • MaskTextBox 很有趣,我不知道这个。但是我不能使用非 DevExpress 控件,因为我使用 DevExpress 验证来验证编辑框的值(例如,验证它是否在某个范围内)。
    【解决方案3】:

    您可以构建自己的从TextBox 派生(继承)的类,然后覆盖属性Text 以添加您的要求:

    internal class SmartTextBox : TextBox
    {
        public SmartTextBox()
        {
        }
    
        public override string Text
        {
            get
            {
                return base.Text;
            }
            set
            {
                // validate 'value' before setting it
                base.Text = value;
            }
        }
    }
    

    构建项目后,您会发现新的 Control 名为 SmartTextBox 并带有 .NET 控件。

    编辑: 但是,如果您只使用TextBox 进行数字输入,为什么不使用NumericUpDown 控件呢?更好的是,用户不能输入字符,甚至可以设置十进制数的精度。

    【讨论】:

    • 每次击键都会调用这个属性吗?
    • @Ba yab。在文本发生任何更改后,将调用此 override 属性,以便您始终可以验证输入。
    猜你喜欢
    • 2013-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    相关资源
    最近更新 更多