我如何限制这些的使用?它们被绑定到C#Windows应用程序表单中的按钮,它正在运行。每当我单击按钮1次时它会显示textBox2文本+ Man,同样适用于textBox3文本+ Women。但当我点击它2次它显示为(让我们说textBox2文本是“你好”)你好男人。我怎样才能将它限制在一次,因为它永远不会超过1个字男人或每个女人1个字?
textBox2.Text += " Man";
textBox3.Text += " Women";
答案 0 :(得分:1)
将其放在按钮点击处理程序中:
textBox2.Text = textBox2.Text.Contains("Man") ? textBox2.Text : textBox2.Text + " Man";
textBox3.Text = textBox3.Text.Contains("Women") ? textBox3.Text : textBox3.Text + " Women";
它的工作原理如下:
textbox2.text = condition? first expression:second expression;
如果条件的计算结果为true,则返回第一个表达式,否则返回第二个表达式。
答案 1 :(得分:0)
您可以使用.Tag
属性:
string originalText = textBox2.Tag + "";
if (originalText.Length == 0)
{
originalText = textBox2.Text;
textBox2.Tag = originalText;
}
textBox2.Text = originalText + " Man";
其他文本框也一样。
为了使其更易于使用而不是为每个文本框重复所有这些行,请使用扩展方法:
public static class Extensions
{
public static void AddOnce(this TextBox textbox, string text)
{
string originalText = textbox.Tag + "";
if (originalText.Length == 0)
{
originalText = textbox.Text;
textbox.Tag = originalText;
}
textbox.Text = originalText + text;
}
}
然后就变得如此简单:
textBox2.AddOnce(" Man");
textBox3.AddOnce(" Women");
答案 2 :(得分:0)
将数据存储在实例字段中:
int maleCount = 0;
int femaleCount = 0;
每当有人点击按钮时,您都会递增相应的计数器并调用以下帮助程序:
void UpdateUI() {
textBox2.Text = maleCount == 0 ? "" : " Man";
textBox3.Text = femaleCount == 0 ? "" : " Women";
}
从数据中驱动用户界面。不要直接更改UI。将差异应用于UI是麻烦且容易出错的。最好有一个通用的辅助函数,一次更新所有内容。
答案 3 :(得分:0)
这可以通过简单的if语句直接完成:
if (!textBox2.Text.EndsWith(" Man"))
textBox2.Text += " Man";
if (!textBox3.Text.EndsWith(" Women"))
textBox3.Text += " Women";