2016-07-06 83 views
3

的输入我想要定义一个通用的方法来填充Windows窗体上的ComboBox控件。我通常使用Dictionary将他们绑定到数据源来填充我的组合框。由于我有一些这样的人,我想创建一个方法,我可以调用任何键,值对的组合。这里是我的尝试:使用未定义的字典<Type, Type>作为方法

private void PopulateDropdown(ComboBox control, Dictionary<Type, Type> dict) 
{ 
    if (dict.Count > 0) 
    { 
     control.DataSource = new BindingSource(dict, null); 
     control.DisplayMember = "Key"; 
     control.ValueMember = "Value"; 
    } 
} 

我想能够调用它像这样:

PopulateDropdown(cbPrinters, this.inputData.Printers);其中this.inputData.Printers是字典与键/值类型为字符串,字符串,但我也有其他组合一样串,int或者string,object。

我得到一个错误,无法将字符串,字符串转换为类型,类型。我怎样才能解决这个问题?

回答

6

您需要使用泛型参数来声明方法:

private void PopulateDropdown<TKey,TValue>(ComboBox control, Dictionary<TKey, TValue> dict) 
{ 
} 
+0

啊!这似乎运作良好。非常感谢澄清。 – konrad

-1

您必须在模板添加到功能:

private void PopulateDropdown<Type>(ComboBox control, Dictionary<Type, Type> dict) 
+0

如果Key和Value类型都是相同的,例如string,string,那么这不会起作用。但失败,如果他们是字符串,整数或字符串,对象? – konrad

+0

是的,这只适用于两者都是相同类型的情况,但这是你的情况。如果你想要不同的类型使用RenéVogt anwser – JMA

+0

这不是我的情况,我在我的问题中建议我会有不同的组合。看来你还没有读过这个问题,所以我投了你的答案。谢谢 – konrad

相关问题