System.FormatException错误以及如何检查表单是否为空?

时间:2017-06-09 10:20:02

标签: c# .net winforms

项目概述:

A一直在撰写SaveDetails() function,其中包含来自多个input的所有用户Textboxes并将其存储在我的私有字段中。该函数需要首先检查所有验证是否成功,如果为true,则需要将值存储在新创建的实例中。如果失败,则消息需要向用户显示存在错误。

private void btn_SaveDetails_Click_1(object sender, EventArgs e)
        {

            try
            {

                foreach (Control c in panel1.Controls) // Loop through all controls 
                {
                    if (errorProvider1.GetError(c).Length > 0)   // Look for errorProviders
                    {
                        isValid = false;                         // if Found, change Var to False 
                        MessageBox.Show("invalid entry, please revisit the form before proceding");   //Display Error Mesage

                    }
                }
                if (isValid)
                {
                    FormValidation formValidation = new FormValidation(ID);
                    // takes Id on contrructs
                    buttonPresed = "Ok was Pressed!!";

                    formValidation.RName = txt_RegisteredName.Text;
                    formValidation.SName = txt_ShortName.Text;
                    formValidation.BName = txt_BuildingName.Text;
                    formValidation.BNumber = (int)nud_BuildingNumber.Value;
                    formValidation.StreetName = txt_StreetName.Text;
                    formValidation.Locality = txt_Locality.Text;
                    formValidation.Town = txt_Town.Text;
                    formValidation.County = txt_County.Text;
                    formValidation.Country = txt_Country.Text;
                    formValidation.Postcocde = txt_Postcode.Text;
                    formValidation.AltSwitch = int.Parse(txt_SwitchBoard.Text);
                    formValidation.Fax = int.Parse(txt_Fax.Text);
                    formValidation.Email = txt_Email.Text;
                    formValidation.ButtonType = buttonPresed;

                    MessageBox.Show("Indi Form Saved");
                    Hide();


                }
            }

            catch (Exception b)
            {

                MessageBox.Show(b.ToString());
            }
        }



    }

我目前遇到两个问题,

1)。查询:

如果用户没有输入任何值并单击保存在“空表单”上,则不会有任何ErrorProviders被标记,因此该函数不知道不完整的表单。我需要检查是否在面板上的Te​​xtBox中没有输入任何内容。有没有办法做到这一点,并检查我的表格是否为空?是否有方法检查面板上的所有控件是否为空?

第2次)。查询

我也得到System.FormatException的例外:输入字符串格式不正确。我知道这是因为我在此转换中输入了一个字符串。  我正在从TextBox获取我的输入,因此转换。输入任何内容时都会发生此异常,除了Int例如+,h~whitespace都会失败并给我这个例外。如有任何可能解决方案的想法?我试过tryParse但是这似乎没有转换输入字符串。

2 个答案:

答案 0 :(得分:1)

如果任何文本框为空,这是一种简单的测试方法

TextBox[] boxes = {
   txt_RegisteredName,
   txt_ShortName,
   txt_BuildingName,
   txt_StreetName,
   txt_Locality,
   txt_Town,
   txt_County,
   txt_Country,
   txt_Postcode,
   txt_SwitchBoard,
   txt_Fax,
   txt_Email
};
Boolean isEmpty = boxes.Where(x => x.Text.Trim().Length == 0).Any();

答案 1 :(得分:0)

对于查询1: validate textbox if empty and if number entered

对于查询2:哪个文本框失败?什么是数据类型,你想要准确传递什么?