一叶障目,没有接触到的知识点真是太多了......
最近项目里需要用到一个小工具,就用winform写了一个出来,然后需要一个功能就是清空控件内容,我这个工具就用到了textbox和combobox,就拿这两个做示例了。
对于清空winform控件,网上搜索答案基本都是需要转化成string然后比较name的硬编码,参考:
/questions/7252186/switch-case-on-type-c-sharp
/lonelyxmas/p/5472462.html
当我这么写了之后,就像下面这样,被review代码的资深嫌弃了......
private void ClearCntrValue(Control parContainer){for (int index = 0; index < parContainer.Controls.Count; index++){// 如果是容器类控件,递归调用自己if (parContainer.Controls[index].HasChildren){ClearCntrValue(parContainer.Controls[index]);}else{switch (parContainer.Controls[index].GetType().Name){case "TextBox":parContainer.Controls[index].Text = "";break;case "RadioButton":((RadioButton)(parContainer.Controls[index])).Checked = false;break;case "CheckBox":((CheckBox)(parContainer.Controls[index])).Checked = false;break;case "ComboBox":((ComboBox)(parContainer.Controls[index])).Text = "";break;}}}}
于是就学了在现在的我看起来的神操作,就像这样:
private void ClearCntrValue(Control.ControlCollection controls){foreach (Control ctr in this.Controls){switch (ctr){case TextBox text:text.Text = "";break;case ComboBox comboBox:comboBox.SelectedItem = OperateType.PleaseWait;break;}}}
参考官方文档:
/en-us/dotnet/csharp/language-reference/keywords/switch
每天进步一点点,咱不能什么都知道,但是看到了好的东西就记下来,慢慢积累就牛起来啦。