什么是解决以下问题的最佳方法?
foreach (Control control in this.Controls)
{
if (control is ComboBox || control is TextBox)
{
ComboBox controlCombobox = control as ComboBox;
TextBox controlTextbox = control as TextBox;
AutoCompleteMode value = AutoCompleteMode.None;
if (controlCombobox != null)
{
value = controlCombobox.AutoCompleteMode;
}
else if (controlTextbox != null)
{
value = controlTextbox.AutoCompleteMode;
}
// ...
}
}
您看,获取AutoCompleteMode属性已经足够复杂了。可以假设我有一个ComboBox或者TextBox。
我的第一个想法是使用多个类型的泛型T,但似乎在.NET中不可能实现:
public string GetAutoCompleteModeProperty<T>(T control) where T: ComboBox, TextBox // this does not work, of course
很遗憾,这两个控件没有共同的基类。
注: 这是一个更为通用的问题,使用了一个最小化的示例。在我的情况下,我还希望访问/操作其他AutoComplete*属性(这两个控件也都有相同的属性)。
谢谢您的建议!
controlCombobox
为空,那它就不是一个ComboBox等等。 - MAV