當我單擊Windows窗體上的一個複選框時,它將啓用一個文本框並將其中的光標設置爲可供輸入。代碼相對簡單:創建一個程序來減少C#中的冗餘代碼
private void chkLatte_CheckedChanged(object sender, EventArgs e)
{
if(chkLatte.Checked)
{
txtLatte.Enabled = true;
txtLatte.Focus();
}
else
{
txtLatte.Enabled = false;
txtLatte.Text = "0";
}
}
現在,這裏是擦。我有很多的這些複選框所以我想是這樣的:
public void setCheckBox(string chkName, string txtName)
{
if (chkName.Checked)
{
txtName.Enabled = true;
txtName.Focus();
}
else
{
txtName.Enabled = false;
txtName.Text = "0";
}
}
現在,我可以調用該方法,並通過適當的參數是這樣的:
private void chkMocha_CheckedChanged(object sender, EventArgs e)
{
setCheckBox(chkMocha,txtMocha);
}
當然,這將無法正常工作:.Checked .Enabled .Focus()等僅適用於複選框對象,我將chkName定義爲字符串
我應該如何重新編寫過程setCheckBox來解決此問題?
這並不回答原始問題:單個處理程序無法知道要對哪個文本框執行操作,除非邏輯有從發送者的身份中推導出的方式。這種機制(例如將CheckBoxes連接到文本框的字典)應該是您的解決方案的一部分,以使其完成... –