C# combobox中基类的DisplayMember属性
我使用Windows窗体。我想要基类中的DisplayMember相等属性? 我有课C# combobox中基类的DisplayMember属性,c#,.net,combobox,C#,.net,Combobox,我使用Windows窗体。我想要基类中的DisplayMember相等属性? 我有课 public class MyViewModel { public int Id { get; set; } public Type Type { get; set; } } 我想让我的组合框显示Type.Name List<MyViewModel> list = new List<MyViewModel>(); list.Add(new MyViewModel(){
public class MyViewModel
{
public int Id { get; set; }
public Type Type { get; set; }
}
我想让我的组合框显示Type.Name
List<MyViewModel> list = new List<MyViewModel>();
list.Add(new MyViewModel(){ Id = 1, Type.GetType(int)});
list.Add(new MyViewModel(){ Id = 2, Type.GetType(string)});
//how i must to config displayMember???
myComboBox.DisplayMember = "Type.Name";
myComboBox.ValueMember = "Id";
myComboBox.DataSoutce = list;
List List=新列表();
添加(新的MyViewModel(){Id=1,Type.GetType(int)});
添加(新的MyViewModel(){Id=2,Type.GetType(string)});
//我必须如何配置displayMember???
myComboBox.DisplayMember=“Type.Name”;
myComboBox.ValueMember=“Id”;
myComboBox.DataSoutce=列表;
但我无法获取组合框中显示的Type.Name。你能帮我吗?一个
组合框中有一个用于此目的的事件,称为格式
:
myComboBox.DisplayMember = "Type";//Notice this
myComboBox.Format += (s,e) => {
e.Value = ((Type)e.Value).Name;
};
必须创建具有两个属性的新类:
class MyViewModel
{
public string TypeName {get; set; }
public string Id {get; set; }
}
// generate the datasource list.
List<MyViewModel> list = new List<MyViewModel>();
list.Add(new MyViewModel(){ Id = 1, TypeName = typeof(int).Name});
list.Add(new MyViewModel(){ Id = 2, TypeName = typeof(string).Name});
// how i must to config displayMember
myComboBox.DisplayMember = "TypeName";
myComboBox.ValueMember = "Id";
myComboBox.DataSoutce = list;
类MyViewModel
{
公共字符串类型名{get;set;}
公共字符串Id{get;set;}
}
//生成数据源列表。
列表=新列表();
添加(新的MyViewModel(){Id=1,TypeName=typeof(int.Name});
添加(新的MyViewModel(){Id=2,TypeName=typeof(string.Name});
//我必须如何配置displayMember
myComboBox.DisplayMember=“TypeName”;
myComboBox.ValueMember=“Id”;
myComboBox.DataSoutce=列表;
Type它是System.Type是否在代码的其他地方使用Type属性?因为如果没有,只存储它的名称会更容易。我需要Id和类型。现在,我的类还有一个Name字段,我想从中删除。((Type)e.Value)。Name不能将“((System.Windows.Forms.ConvertEventArgs)(e)).Value”(实际类型为“EditorX.Model.ViewOfTable”)强制转换为“System.Type”string@Mikhail您的显示成员是什么?确保它是我在代码中注意到的“Type”
。实际上,您的代码正在工作。谢谢但在我看来,这是硬代码。这是唯一的办法?@Mikhail你为什么认为这是硬代码<代码>格式
事件就是为此目的而添加的。这是唯一最简单的方法。文本框
甚至没有该事件。只有ListControl
有,ComboBox
继承自ListControl
。因为我认为myComboBox.DisplayMember=“Type.Name”不是硬代码,但它不是工作。相反,我想去掉多余的属性。我也遇到了同样的问题,我用这个方法解决了问题。