【问题标题】:How to validate Telerik's RadSpinEditor when the value of the input change输入值更改时如何验证 Telerik 的 RadSpinEditor
【发布时间】:2015-01-08 02:16:39
【问题描述】:

我正在使用 2 个 RadSpinEditor WinForms 控件。当 2 中的任何一个值发生变化时,我计算第二个输入的值。

我遇到的问题是,RadSpinEditor 的值可能会根据许多事情发生变化(例如,在 keyDown 上,如果用户使用向上/向下箭头更改了值,或者使用类型为非-数值系统自动将其更正为最大值(即99.99))

我怎样才能捕捉到所有这些情况,以确保它们的价值在价值变化时立即计算出来。

这是我到目前为止所做的(问题是它不会总是改变值)

private void InputMargin_KeyUp(object sender, KeyEventArgs e)
{
    double v = 0;
    try
    {
        double margin;
        double.TryParse(InputMarkup.Text, out margin);
        margin /= 100;
        v = Math.Round((margin / (1 + margin)) * 100, 2, MidpointRounding.AwayFromZero);
    }
    catch
    {
        v = 0;
    }
    finally
    {
        InputMarkup.Text = v.ToString();
    }
}

private void InputMarkup_KeyUp(object sender, KeyEventArgs e)
{
    double v = 0;
    try
    {
        double markup;
        double.TryParse(InputMarkup.Text, out markup);
        markup /= 100;
        v = Math.Round((markup / (1 + markup)) * 100, 2, MidpointRounding.AwayFromZero);
    }
    catch
    {
        v = 0;
    }
    finally
    {

        InputMargin.Text = v.ToString();
    }
}

我也这样做了(根本不计算 - 似乎 ValueChanged 事件根本没有触发)

private void InputMargin_ValueChanged(object sender, EventArgs e)
{

    double v = 0;
    try
    {
        double margin;
        double.TryParse(InputMarkup.Text, out margin);
        margin /= 100;
        v = Math.Round((margin / (1 + margin)) * 100, 2, MidpointRounding.AwayFromZero);
    }
    catch
    {
        v = 0;
    }
    finally
    {

        InputMarkup.Text = v.ToString();
    }
}

private void InputMarkup_ValueChanged(object sender, EventArgs e)
{

    double v = 0;
    try
    {
        double markup;
        double.TryParse(InputMarkup.Text, out markup);
        markup /= 100;
        v = Math.Round((markup / (1 + markup)) * 100, 2, MidpointRounding.AwayFromZero);
    }
    catch
    {
        v = 0;
    }
    finally
    {

        InputMargin.Text = v.ToString();
    }
}

【问题讨论】:

    标签: c# winforms validation input telerik


    【解决方案1】:

    您可以使用 Value Changed 事件来代替 Key Up 事件,该事件将在任何时候以任何方式更改值时触发。当您使用键盘输入值时,按下回车键后会触发值更改事件。

    我已经试过了。它对我有用。

    您可能会在计算中得到负值。因此,请根据计算值的范围设置 NumericUpDown 控件的最小值和最大值。

    在您的代码中,我还注意到您有两个控件的事件。在这种情况下,您正在更改另一个控件的值。为什么要这么做?这将导致两个事件一个接一个地触发。

    【讨论】:

    • 我只使用一个事件 ValueChange 或 KeyUp
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-20
    • 2011-06-19
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    相关资源
    最近更新 更多