Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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#_Windows_Forms - Fatal编程技术网

C# 无法提交文本框为空的表单(反向验证并让其提交)

C# 无法提交文本框为空的表单(反向验证并让其提交),c#,windows,forms,C#,Windows,Forms,我有一个简单的Windows窗体应用程序,该窗体有两个文本框来查找邮政编码/郊区名称: 输入郊区名称 输入邮政编码 如果邮政编码(文本框)没有输入值,则表单将挂起,并且不会提交/返回值。尝试了一些操作,但仍然失败(FormatException未处理)。添加任何int值都可以 private void btnFind_Click(object sender, EventArgs e) { //DECLARE ARRAY string[] arrSuburbName = new

我有一个简单的Windows窗体应用程序,该窗体有两个文本框来查找邮政编码/郊区名称:

  • 输入郊区名称
  • 输入邮政编码
  • 如果邮政编码(文本框)没有输入值,则表单将挂起,并且不会提交/返回值。尝试了一些操作,但仍然失败(FormatException未处理)。添加任何int值都可以

    private void btnFind_Click(object sender, EventArgs e)
    { 
        //DECLARE ARRAY
        string[] arrSuburbName = new string[5];
        int[] arrSuburbPC = new int[5];
    
        //POPULATESUBURB NAME ARRAY
        arrSuburbName[0] = "DEE WHY";
        arrSuburbName[1] = "SYDNEY";
        arrSuburbName[2] = "HURSTVILLE";
        arrSuburbName[3] = "BALMAIN";
        arrSuburbName[4] = "NORTH SYDNEY";
    
        //POPULATE POSTCODE ID ARRAY
        arrSuburbPC[0] = 2099;
        arrSuburbPC[1] = 2000;
        arrSuburbPC[2] = 2220;
        arrSuburbPC[3] = 2041;
        arrSuburbPC[4] = 2060;
    
        //VARIABLES
        string inputSuburb = "";
        int inputPostCode = 0;
        string msg = "";
    
        //INPUT
        inputSuburb = txtInputSuburb.Text.Trim();
        inputPostCode = int.Parse(txtInputPostCode.Text);
    
    
        //PROCESS
        for (int i = 0; i < arrSuburbPC.Length; i++)
        {
            if (inputSuburb.ToUpper() == arrSuburbName[i])
            {
                msg = "Postcode for " + arrSuburbName[i] + " is: " + arrSuburbPC[i];
                inputPostCode = 0;
                break; //EXIT THE LOOP
            }
            else if (inputPostCode == arrSuburbPC[i])
            {
                msg = "Postcode for " + arrSuburbName[i] + " is: " + arrSuburbPC[i];
                break; //EXIT THE LOOP
            }
            else
            {
                msg = "Postcode Not Found";
            }
        }
    
        //OUTPUT
        lblResult.Text = msg;
    }
    
    private void btnFind\u单击(对象发送者,事件参数e)
    { 
    //声明数组
    字符串[]arrSuburbName=新字符串[5];
    int[]arrpc=新int[5];
    //POPULATESUBURB名称数组
    arrSuburbName[0]=“为什么”;
    arrSuburbName[1]=“悉尼”;
    arrSuburbName[2]=“赫斯特维尔”;
    arrSuburbName[3]=“BALMAIN”;
    arrSuburbName[4]=“北悉尼”;
    //填充邮政编码ID数组
    arrpc[0]=2099;
    arrpc[1]=2000;
    arrpc[2]=2220;
    arrpc[3]=2041;
    arrpc[4]=2060;
    //变数
    字符串输入=”;
    int inputPostCode=0;
    字符串msg=“”;
    //输入
    inputpubarea=txtinputpubarea.Text.Trim();
    inputPostCode=int.Parse(txtInputPostCode.Text);
    //过程
    对于(int i=0;i

    为什么不使用Int.TryParse(…)而不是Int.Parse(…)

    你有

    inputSuburb = txtInputSuburb.Text.Trim();
    inputPostCode = int.Parse(txtInputPostCode.Text);
    
    但是在您附加的UI屏幕中,您提供了,因此邮政编码可能是空的

    您需要更改代码中的逻辑。需要考虑的事项:

  • 如果邮政编码为空怎么办?->这就是你现在的处境
  • 如果用户输入非数字,如“abcd”,该怎么办
  • 您的逻辑应该有一些验证。例如,使用try-catch结构


    也许您还应该考虑用户<强>数字-UpDuff<强>控件> /p>,因为在<代码> txTnPtTestCord.Text < /代码>中没有任何值,并且您正在试图解析它。在分析

    文本框
    是否有任何值之前进行检查,然后分析它是否有一些值。如果默认值为空,您希望它是什么?在这种情况下,您需要使用任何条件语句,如@J.SMTBCJ15 answered,是的,您不能解析空对象。在评论/建议之后,我将不得不进一步考虑这一点。如果您能在简单的代码片段上添加一些验证链接,我们将不胜感激?如果C#有类似“必选”的东西,那就冷静点。1.找出逻辑2。测试其中一个文本框是否有值(使用一个或另一个)3。如果邮政编码为空,则解析值-validate+=值4。如果邮政编码具有字母字符,则返回messagebox/alert-验证5。如果郊区有数字字符,则返回messagebox/alert-validateQ。试着接球,像这样的?catch(InvalidCastException e){if(e.Data==null){throw;}否则{//采取一些措施。}}例如,是的。关键是,当存在或不存在邮政编码时,您会忽略系统应该如何工作的逻辑。