Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在文本框中只允许整数_C#_Winforms_Textbox - Fatal编程技术网

C# 在文本框中只允许整数

C# 在文本框中只允许整数,c#,winforms,textbox,C#,Winforms,Textbox,我在检查文本框并确保其中只有整数时遇到问题 到目前为止,我能够确认文本框中是否有文本,但检查它们是否为整数不起作用。这是我的代码,到目前为止仍然有效 if (textBox1.Text.Length == 0) { errorProvider1.SetError(textBox1, "need Cost of Disks"); return; } if (textBox2.Text.Length == 0) { errorProvider2.SetError(textBo

我在检查文本框并确保其中只有整数时遇到问题

到目前为止,我能够确认文本框中是否有文本,但检查它们是否为整数不起作用。这是我的代码,到目前为止仍然有效

if (textBox1.Text.Length == 0)
{
    errorProvider1.SetError(textBox1, "need Cost of Disks");
    return;
}
if (textBox2.Text.Length == 0)
{
    errorProvider2.SetError(textBox2, "need Total disks in package");
    return;
}
if (textBox3.Text.Length == 0)
{
    errorProvider3.SetError(textBox3, "need the Gigabyte per disk");
    return;
}
try
{
    Double[] myValues = new Double[3];
    myValues[0] = Double.Parse(textBox1.Text);
    myValues[1] = Double.Parse(textBox2.Text);
    myValues[2] = Double.Parse(textBox3.Text);

    Double ppd = myValues[0] / myValues[1] / myValues[2];

    ppd = Math.Round(ppd, 3, MidpointRounding.AwayFromZero);

    label4.Text = ppd.ToString();
}
catch (FormatException)
{
    //errorProvider1.SetError(label4, "testing1");

    //errorProvider2.SetError(label4, "testing2");

    //errorProvider3.SetError(label4, "testing3");
    return;
}
重写表单文本框中的事件,然后可以对内容执行更改

public void textBox1_Validating(...)
{
  // TryParse
}

可以使用int.TryParse方法检查字符串是否为整数:

int n = 0;
bool isNumber = int.TryParse(textBox1.Text, out n);

if (!isNumber)
   return;

为什么不使用?

使用当前模式,类似这样:

int tester;
if (!Int32.TryParse(textBox1.Text, out tester))
{
    errorProvider1.SetError(textBox1, "must be integer");
    return;
}

如果你不想在编辑框中输入除数字以外的任何内容,那么就钩住键盘事件,检查不是数字的字符,然后取消它们


当您在一个文本框中整理出需要哪些事件时,只需在其他文本框中重复使用相同的事件,因为您不必到处复制事件。

如果您曾经开始使用ajax工具包,请将其保留下来作为记录

<ajaxToolkit:FilteredTextBoxExtender ID="FilteredTextBoxExtender1" TargetControlID="FUND_CD" FilterType="Custom" ValidChars="1234567890" runat="server">
                        </ajaxToolkit:FilteredTextBoxExtender>


我建议使用正则表达式。谢谢你的帮助。不得不将int改为double,但后来成功了。这与问题有什么关系?由于某种原因,文章的其余部分没有显示,我包含了一个代码。啊,好吧,我没有意识到你的文章中还有更多内容。但是再一次,如果你仔细看这个问题,它是关于WinForms的,而不是ASP.net,所以这对这个问题没有多大帮助。