有人可以缩短此代码吗? 有14个按钮和8个文本框。如果文本框不为空且如果它不为空,则将执行该操作,然后当您单击它时,将再次显示与文本框中的字母对应的按钮,使文本框为空。
private void txt1_Click(object sender, EventArgs e)
{
if (txt1.Text == "J")
{
txt1.Text = "";
btn1.Visible = true;
}
else if (txt1.Text == "M")
{
txt1.Text = "";
btn2.Visible = true;
}
else if (txt1.Text == "Y")
{
txt1.Text = "";
btn3.Visible = true;
}
else if (txt1.Text == "E")
{
if (btn4.Visible == true)
{
txt1.Text = "";
btn5.Visible = true;
}
else
{
txt1.Text = "";
btn4.Visible = true;
}
}
else if (txt1.Text == "Q")
{
txt1.Text = "";
btn6.Visible = true;
}
else if (txt1.Text == "L")
{
if (btn7.Visible == true)
{
txt1.Text = "";
btn10.Visible = true;
}
else
{
txt1.Text = "";
btn7.Visible = true;
}
}
else if (txt1.Text == "B")
{
txt1.Text = "";
btn8.Visible = true;
}
else if (txt1.Text == "C")
{
txt1.Text = "";
btn9.Visible = true;
}
else if (txt1.Text == "P")
{
txt1.Text = "";
btn11.Visible = true;
}
else if (txt1.Text == "I")
{
txt1.Text = "";
btn12.Visible = true;
}
else if (txt1.Text == "K")
{
txt1.Text = "";
btn13.Visible = true;
}
else if (txt1.Text == "O")
{
txt1.Text = "";
btn14.Visible = true;
}
}
答案 0 :(得分:4)
假设所有btn
变量都是您班级状态的一部分,那么您可以声明一个类似的方法:
public Button Click(String txt) {
switch(txt) {
case "J":
return btn1;
case "M":
return btn2;
case "Y":
return btn3;
case "E":
return (btn4.Visible ? btn5 : btn4);
case "Q":
return btn6;
case "L":
return (btn7.Visible ? btn10 : btn7);
case "B":
return btn8;
case "C":
return btn9;
case "P":
return btn11;
case "I":
return btn12;
case "K":
return btn13;
case "O":
return btn14;
}
return null;
}
然后你称之为:
var button = Click(txt1.Text);
if(button != null) {
button.Visible = true;
txt1.Text = "";
}
但是,如果btn
变量具有局部范围,则可以将其定义为内联Func<String,Button>
委托,而不是方法:
Func<String, Button> Click = txt => {
switch(txt) {
...
}
};
答案 1 :(得分:1)
您仍然需要处理特殊情况(driver.find_element_by_css_selector("table.GHN3134DJ5I input.loginTextBox.loginTextBox-watermark.loginTextBox-hightlight[type='text']")
和"E"
),但您可以使用"L"
来进行查找:
Dictionary<string, Button>
这会减少大部分重复代码。
答案 2 :(得分:0)
看着这个:我建议你回想一下更合乎逻辑的方式去做你正在做的事情。
根据我的经验,代码中if-else的任何巨大链表示某处存在逻辑问题。
另外,请熟悉切换语句