【问题标题】:C#, How do I validate wpf textbox values?C#,如何验证 wpf 文本框值?
【发布时间】:2011-04-03 17:46:08
【问题描述】:

文本框:

<TextBox Text="{Binding Path=nSetting, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Name="tbSetting" />

类:

public class FormLink
{
    private string _nSetting;

    public string nSetting 
    { 
        get 
        { 
            return this.validateNumberValue(this._nSetting, 256, 9999, 56);
        } 
        set
        {
            this._nSetting = this.validateNumberValue(value, 256, 9999, 56);
        } 
    }

    private string validateNumberValue(string number, int nMaxReturn, int nMaxParse, int nDefault)
    {
        int pNum = nMaxParse; 
        Int32.TryParse(number, out pNum);

        if (pNum == 0)
        {
            return nDefault.ToString();
        }
        else if (pNum < nMaxReturn)
        {
            return pNum.ToString(); 
        }
        else if (pNum > nMaxReturn)
        {
            return nMaxReturn.ToString();
        }
        else
        {
            return nDefault.ToString();
        }
    }
}  

如何让这个文本框正确更新?

现在如果数字 > 256,它会更新为 256.. 但是......如果我继续输入,它不会重置为 256。此外,在 10 个字符后,它会重置为 0。我也可以开始输入 0 和永无止境地继续前进。

如何让它始终更新?
为什么数字长10个字符后会重置为0?
为什么多个 0 不像我编码的那样重置为 56?

【问题讨论】:

    标签: c# wpf data-binding


    【解决方案1】:

    WPF 4 文本框 (see my question) 中存在错误。那里发布的解决方案有效。

    【讨论】:

    • 那是有道理的。多么糟糕的错误...现在必须编写一堆额外的代码...我想知道为什么连基本的数字逻辑都失败了(上次我检查了 000 == 0 等等)。感谢您的帮助!
    • 嗯,这比我想象的还要容易......根本没有多少代码。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多