当我将文本框留空时,如何防止程序崩溃
本文关键字:何防止 程序 崩溃 文本 | 更新日期: 2023-09-27 18:21:48
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace IP_HULK
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
int n1, n2, n3, n4;
if (numbox1.Text == "" || numbox2.Text == "" || numbox3.Text == "" || numbox4.Text == "")
{
MessageBox.Show("el ip fadi");
}
n1 = Convert.ToInt16(numbox1.Text);
n2 = Convert.ToInt16(numbox2.Text);
n3 = Convert.ToInt16(numbox3.Text);
n4 = Convert.ToInt16(numbox4.Text);
if ((n1 > 0 && n1 < 255) && (n2 > -1 && n2 < 255) && (n3 > -1 && n3 < 255) && (n4 > -1 && n4 < 255))
MessageBox.Show("The IP is Valid");
else
MessageBox.Show("The ip isn't valid");
}
private void textBox1_TextChanged_1(object sender, EventArgs e)
{
}
private void numbox1_Leave(object sender, EventArgs e)
{
}
}
}
您将需要使用else
语句。您的逻辑是,如果文本框为空,则显示一条消息。一旦用户关闭MessageBox,您的程序将尝试转换Textbox值,无论它们是否为空。
例如:
int n1, n2, n3, n4;
if (numbox1.Text == "" || numbox2.Text == "" || numbox3.Text == "" || numbox4.Text == "")
{
MessageBox.Show("el ip fadi");
}
else
{
n1 = Convert.ToInt16(numbox1.Text);
n2 = Convert.ToInt16(numbox2.Text);
n3 = Convert.ToInt16(numbox3.Text);
n4 = Convert.ToInt16(numbox4.Text);
}
然而,您最好将其拆分为一个方法,该方法将为您执行验证。作为附加说明,可以使用int.TryParse
而不是更可读的Convert
和string.IsNullOrWhiteSpace
。
if (string.IsNullOrWhiteSpace(numbox1.Text))
{
}
int n1, n2, n3, n4;
if (!Int32.TryParse(numbox1.Text, out n1) || !Int32.TryParse(numbox2.Text, out n2) ||
!Int32.TryParse(numbox3.Text, out n3) || !Int32.TryParse(numbox4.Text, out n4))
{
MessageBox.Show("el ip fadi");
return;
}
请改用TryParse
,因为如果输入的数据无效,此不会崩溃。相反,它只是返回true
或false
(并将转换的值作为out
参数"返回")。
此外,由于用于转换值的代码的其余部分与方法的其余部分"一致"发生,因此它将在MessageBox
出现后继续执行。您可以像Darren发布的那样,将方法的其余部分封装在else
块中,也可以像我在这里所做的那样,在显示MessageBox
之后简单地封装return
。
此外,您没有"将文本框留空",而是将其留空。CCD_ 13和CCD_。