如何根据两个标准以两种不同的方式触发同一事件?(C#)
我提出这个问题的措辞可能有误。这是一个棘手的问题,我迫切需要解决方案:-( 我想用两种不同的方式触发如何根据两个标准以两种不同的方式触发同一事件?(C#),c#,events,multiple-instances,C#,Events,Multiple Instances,我提出这个问题的措辞可能有误。这是一个棘手的问题,我迫切需要解决方案:-( 我想用两种不同的方式触发textBox1\u KeyDown,但要根据某些条件按下同一个键。下面的代码会更清晰 private void textBox1_KeyDown(object sender, KeyEventArgs e) { if (textBox1.Text == "") { if (e.KeyCode == Keys.Enter)
textBox1\u KeyDown
,但要根据某些条件按下同一个键。下面的代码会更清晰
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (textBox1.Text == "")
{
if (e.KeyCode == Keys.Enter)
{
textBox1.Text = "x";
}
}
if (textBox1.Text != "")
{
if (e.KeyCode == Keys.Enter)
{
textBox1.Text = "y";
}
}
}
我想做的是,当我按下textBox1上的Enter按钮时,如果没有文本,我希望它显示“x”。如果有文本,我希望文本框显示“y”按Enter键。当我按照上面的编码方式执行时,两个过程都发生在一个实例中。也就是说,当textBox1
为空时,按Enter键会显示“y”(应该是“x”)。这意味着它首先显示“x”,然后由于文本框中有一个数量,文本会变成“y”正如我的代码所调用的那样。如何区分这两个功能??比如我希望文本框在为空且我按Enter键时仅显示“x”,或者在不为空且我按Enter键时仅显示“y”
我一定错过了一些愚蠢的东西。谢谢。请给我代码。我几乎不懂技术术语。首先,您可以将
return;
放在嵌套最深的if
语句中,这样下一个if
就不会执行了
您可以做的另一件事是颠倒条件的顺序,因此您可以在处理程序的顶部而不是底部测试if(textBox1.Text!=“”)
最后,您可以在两个条件之间使用
else
。根据您在那里写的内容,您可以翻转if语句的顺序,或者将第二个块设置为else或else if。您正在寻找类似的内容,因此我相信:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
//determine if text is empty or otherwise equal to 'x'...
if (textBox1.Text == string.Empty || textBox1.Text != "x")
{
//confirmed, set to 'x'...
textBox1.Text = "x";
}
else //and a catch-all for y
{
//text wasn't empty or 'x', set to 'y'...
textBox1.Text = "y";
}
}
您还可以通过以下方式以快捷方式实现这一点:
也许我遗漏了什么,但为什么不添加一个:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (textBox1.Text == "")
{
if (e.KeyCode == Keys.Enter)
{
textBox1.Text = "x";
}
}
else if (textBox1.Text != "")
{
if (e.KeyCode == Keys.Enter)
{
textBox1.Text = "y";
}
}
}
这是因为两个if语句都被执行。第一个if语句执行并使文本框中的文本不为空。这会导致下一个if语句也被触发。只需执行此操作即可解决此问题:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (textBox1.Text == "")
{
if (e.KeyCode == Keys.Enter)
{
textBox1.Text = "x";
}
}
else if (textBox1.Text != "")
{
if (e.KeyCode == Keys.Enter)
{
textBox1.Text = "y";
}
}
}
请注意在第二个if语句中添加了“else”。恐怕我在您遇到的问题中遗漏了一些东西。每个人似乎都有相同的答案,因此您可能需要更好地解释发生了什么。它确实起了作用。谢谢……事实上,我的代码更复杂。所以当我尝试这一点时(我确实尝试了),出现了一些其他错误。我想可能是这个else-if方法不起作用。现在我知道问题不在于else-if语句。要添加到u,即使是第一个循环结束时的
return
,也会使这个方法起作用。感谢Matt Greer,它确实解决了问题。实际上我的代码更复杂。所以当我尝试这个方法时(我确实尝试过),又出现了一些错误。我想可能是这个else if方法不起作用。现在我知道问题不在于else if语句。要添加到u,即使是第一个循环结束时的return
,也会使这个方法起作用,它确实解决了问题。实际上,我的代码更复杂。所以当我尝试这个方法时(我确实尝试了),又出现了一些错误。我想可能是这个else-if方法不起作用。现在我知道问题不在于else-if语句。要添加到u中,即使在第一个循环结束时return
,也会使这个方法起作用。您似乎给出了最全面的答复。让我问您,如果我全部使用这三种方法,会怎么样我的案例更有力?因为在我部署的地方,它永远不会得到正确的执行。或者使用这三种方法会适得其反吗?如果一起使用,它们不会适得其反,但只需要一种方法。
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (textBox1.Text == "")
{
if (e.KeyCode == Keys.Enter)
{
textBox1.Text = "x";
}
}
else if (textBox1.Text != "")
{
if (e.KeyCode == Keys.Enter)
{
textBox1.Text = "y";
}
}
}