以下问题 我有一个WinForm应用程序,我将通过用户输入设置变量,这里只有字符串,十进制或int。这通过在文本框中输入值或在带有按钮的文本框中设置值(增加和减少)来实现。还有两个复选框对(2x是/否)。复选框也将字符串保存在我需要的值中。
在文本框中输入值后,或者设置为正确的数字后,用户按下保存按钮(每个值一个按钮,总共6个保存按钮)。保存按钮始终确保输入正确的值,并保存
在关闭表单之前,我想检查是否已填写所有需要的值,如果没有,请告诉用户:嘿,您忘记了某个值。我怎么能做到这一点?在我的例子中,我想检查Height,Unit和No_of _measure是否已填充值。我可以把它全部变成一个大的" if"与逻辑"或"在它(总共大约14个值),但是我没有得到缺少的具体值,如果没有填写(告诉用户)
示例:
public decimal Height { get; private set; }
public int No_of_measure { get; private set; }
public string Unit { get; private set; }
private void button3_Click(object sender, EventArgs e) //Save the rough heigth
{
if (textBox2.Text == "")
{ MessageBox.Show("No value detected in [Current Height] Window. Please Click Start first!"); }
else
{
Height = Convert.ToDecimal(textBox2.Text);
}
}
private void button5_Click(object sender, EventArgs e) //save no. of measurements
{
if (textBox5.Text == "")
{ MessageBox.Show("Please enter a value"); }
else
{ No_of_measure = Convert.ToInt32(textBox5.Text); }
}
private void checkBox3_CheckedChanged(object sender, EventArgs e) //save Unit mm
{
if (checkBox3.Checked == true)
{
checkBox4.Checked = false;
Unit = "mm";
}
label22.Text = "mm";
label23.Text = "mm";
答案 0 :(得分:0)
关于如何在多个属性中检查null,粗略的方法是将值存储在Dictionary中,您可以在其中运行linq查询,如下所示。这将要求您对表单进行重大更改。
// properties dictionary populate with your values
Dictionary<string,string> _propertiesDictionary = new Dictionary<string, string>();
private bool PropertyChecks()
{
return _propertiesDictionary.Any(x => x.Value == null);
}
您可以创建一个form_closing事件方法并在其中放置您需要的任何逻辑,例如..
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if (PropertyChecks())
{
MessageBox.Show("Some properties are null");
e.Cancel = true;
}
}