我有3个文本框(但在实际情况下,有3个以上的文本框),每个文本框都连接到下面的单个事件处理程序。
private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
TextBox tb = sender as TextBox;
if (e.KeyChar == (char)Keys.Enter)
{
if (tb.Equals(textBox1)) textBox2.Focus();
if (tb.Equals(textBox2)) textBox3.Focus();
if (tb.Equals(textBox3)) button1.Focus();
}
}
当用户按Enter键时,焦点将移至下一个文本框。我想避免在使用
switch
时使用硬编码的字符串常量,因此如上所述,我被迫使用if
。我的问题是:是否有可能使用
switch
但不使用硬编码字符串常量?编辑
我不想写如下内容,因为我讨厌硬编码的常量值。
switch (tb.Name)
{
case "textboxnameone":
textBox2.Focus();
break;
case "textboxnametwo":
textBox3.Focus();
break;
case "textboxnamethree":
button1.Focus();
break;
}
最佳答案
在这里看看:
TabIndex changed to Enter for all forms in C#
How to send focus to control with tabindex lower than current control in C# windows form application?
您可以使用该解决方案和TabIndex以更简洁的方式完成此行为。
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.tabindex(v=vs.110).aspx
关于c# - 我们可以将以下if语句转换为单个开关吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21534888/