假设我有一个文本框和一个按钮,如何让该按钮将无结果(或在文本框中输入的内容)转换为结果0?
private void button1_Click(object sender, EventArgs e)
{
if (this.dateTimePicker1.Text != "")
{
listBox1.Items.Add(this.dateTimePicker1.Text);
}
textBox2.Text += " Woman";
if (this.textBox2.Text != "")
{
listBox1.Items.Add(this.textBox2.Text);
}
textBox3.Text += " People";
if (this.textBox3.Text != "")
{
listBox1.Items.Add(this.textBox3.Text);
}
}
如果在textBox2或textBox3中没有输入任何内容,则会将结果转换为“女人”或“人物”,但我希望它是“0女人”& “0人” - 如果没有输入文本框。 任何人都可以帮助我吗?
答案 0 :(得分:1)
这是我对DRY做的事情(不要重复自己)
// Make a list of textboxes and string
List<Tuple<TextBox, String>> textBoxesTest = new List<Tuple<TextBox, String>>();
// Add the information
textBoxesTest.Add(new Tuple<TextBox, String>(textBox2, "Woman"));
textBoxesTest.Add(new Tuple<TextBox, String>(textBox3, "People"));
// Go through the list
foreach(var tuple in textBoxesTest) {
// tuple.Item1 is a TextBox
// tuple.Item2 is a String
if(String.IsNullOrEmpty(tuple.Item1.Text)) {
tuple.Item1.Text = String.Format("0 {0}", tuple.Item2);
} // if end
else { /* do some other with it */ }
} // foreach end
请勿使用str == ""
测试字符串是否为空。使用String.IsNullOrEmpty(str)
方法检查此情况。它更快,因为str == ""
将创建一个对“”的新String引用。 null或Empty具有不会创建字符串实例的条件value == null || value.Length == 0;
。
也不使用字符串连接,因为每个都将写入RAM,然后每次使用时都需要连接。最好使用String.Format(str, args[])
方法。
上面的代码很好地解决了可维护性问题。您只需要在添加另一个文本框“执行相同操作”时向列表中添加元组,而不是通过复制/粘贴代码添加if / else算法。这将是一个常见的错误来源。
答案 1 :(得分:0)
在函数的最后一行之前添加以下内容,以便不在textBox
textBox2.Text = "";
textBox3.Text = "";
答案 2 :(得分:0)
添加if-else以检查文本框文本是否为null,然后直接更改文本而不是将文本附加到现有文本。喜欢这个
if (textBox2.Text == "" && textBox3.Text == "")
{
textBox2.Text = "0";
textBox3.Text = "0";
}
答案 3 :(得分:0)
你非常接近!测试textBox2和textBox3的内容,然后向其附加额外的文本:
if (textBox2.Text == "")
{
textBox2.Text = "0";
}
textBox2.Text += " Woman";
答案 4 :(得分:0)
这种情况有两种可能性。