动态文本框验证

时间:2012-11-12 06:59:58

标签: c# winforms

这是我的表结构2列率图表和数量:

rate   chart   qty
1      -5       1
6     -10       2
11    -20       3

我在Windows窗体上有3个字段

  • 1个组合框
  • 1个文本框
  • 1按钮

我通过组合框获取了ratechart列值,我有那个代码,但我的要求是如果用户从组合框中选择1-5,那么文本框中他不能在文本框中输入超过6个。

如果用户从组合框中选择6-10,那么他在文本框中输入的数量不能超过12

当他点击保存按钮时,他得到的错误是数量更多......

提前thx。请帮我这个代码

2 个答案:

答案 0 :(得分:0)

假设cmbRateChart.SelectedValue包含关于RangeChart的数值。

private void textBox_Validating(object sender, CancelEventArgs e)
{
    bool cancel = false;
    int number = -1;

    if (int.TryParse(this.textBox.Text, out number))
    {
        var validRange = Convert.ToInt32(cmbRateChart.SelectedValue) * 6;
        if (number <= validRange)
            cancel = false; //passed validation.
        else
            cancel = true; //failed validation, number is not in valid range

    }
    else
        cancel = true;//failed validation: text box is not a number
    e.Cancel = cancel;
}

用法:调用此函数检查验证。

this.ValidateChildren(ValidationConstraints.Enabled);

参考:Validation in Windows Forms

答案 1 :(得分:0)

    private void saveButton_Click(object sender, EventArgs e)
    {
        // Get value from textBox
        int number = Int32.Parse(textBox1.Text);

        // Get value from combobox
        int selcetedComboValue = Int32.Parse(comboBox1.SelectedItem.ToString());

        // Validate Values
        if (selcetedComboValue <= 5)
        {
            if (number <= 6)
            {
                // Valid Number 
            }
            else
            {
                // Invalid Number
            }
        }
        else if (selcetedComboValue <= 10)
        {
            if (number <= 12)
            {
                // Valid Number
            }
            else
            {
                // Invalid Number
            }
        }
    }