3

我正在构建这个 C# windows 应用程序。在某个表单上,我使用 maskedtextbox 输入最多 3 个数字,然后将其转换为 int,因为我必须使用插入查询将所有这些数据发送到数据库,但问题是这些 maskedtextbox 在留空时会出错:

int scd_user_comm = Convert.ToInt32(maskedTextBox1.Text);

错误是:

输入字符串的格式不正确。

数据库中对应的字段允许为空,所以如果留空,一定不会报错。有人可以帮忙吗?

一个问题::我可以使用文本框或掩码文本框来确保用户只输入数字值 b/w 0 到 100?提前致谢。

4

2 回答 2

2

你可以试试 Int32.TryParse() 方法

int scd_user_comm;
if(Int32.TryParse(maskedTextBox1.Text, out scd_user_comm) == false)
     scd_user_comm = 0;

这将为您提供使用整数变量和 maschedTextBox 所需的所有灵活性-

强制您的 maskTextBox 只接受设置的数值

   maskTextBox1.Mask = "999";
   maskTextBox1.TextMaskFormat = MaskFormat.ExludePromptAndLiterals;

但是,这不足以确保输入的数字介于 0 和 100 之间。要获得此结果,您需要使用 Validating 事件并在超出限制时拒绝输入

    private void maskedTextBox1_Validating(object sender, CancelEventArgs e)
    {
        int num;
        if (Int32.TryParse(maskedTextBox1.Text, out num) == true) 
        {
            if (num < 0 || num > 100)
            {
                MessageBox.Show("Insert number between 0 and 100");
                e.Cancel = true;
            }
        }
    }
于 2012-06-28T12:07:07.433 回答
1

您可以改用 TryParse:

int scd_user_comm;
if(!Int32.TryParse(maskedTextBox1.Text, out scd_user_comm))
{
     // Do something to notify the user that the text isn't a number.
}
于 2012-06-28T12:06:57.547 回答