各位好!
我自定义了一个ilist对象作为combobox的数据源,然后利用反射的setvalue()方法给其赋值,结果不起作用,
直接设置SelectedValue可以。请大家帮我看看,代码如下:
public class clsListItem
{
private string myName;
private string myValue; public string ItemValue
{
get
{
return myValue;
} set
{
this.myValue = value;
}
} public string ItemName
{
get
{
return myName;
} set
{
this.myName = value;
} } public override string ToString()
{
return myName.ToString();
}
}using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Collections;
using System.Windows.Forms;
using System.Reflection;
namespace tttt
{
public class
{
void test()
{
IList dtSource = new ArrayList();clsListItem item;
item = new clsListItem();
item.ItemName = "1";
item.ItemValue="1";
dtSource.Add(item);item = new clsListItem()
item.ItemName = "2";
item.ItemValue="2";
dtSource.Add(item);control.DataSource = dtSource;//control是一个combobox对象
control.DisplayMember = "ItemName";
control.ValueMember = "ItemValue";
Type controlType = control.GetType();
PropertyInfo controlProperty =controlType.GetProperty("SelectedValue", typeof(object));
controlProperty.SetValue(control, 1, null);
}
}
}
我自定义了一个ilist对象作为combobox的数据源,然后利用反射的setvalue()方法给其赋值,结果不起作用,
直接设置SelectedValue可以。请大家帮我看看,代码如下:
public class clsListItem
{
private string myName;
private string myValue; public string ItemValue
{
get
{
return myValue;
} set
{
this.myValue = value;
}
} public string ItemName
{
get
{
return myName;
} set
{
this.myName = value;
} } public override string ToString()
{
return myName.ToString();
}
}using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Collections;
using System.Windows.Forms;
using System.Reflection;
namespace tttt
{
public class
{
void test()
{
IList dtSource = new ArrayList();clsListItem item;
item = new clsListItem();
item.ItemName = "1";
item.ItemValue="1";
dtSource.Add(item);item = new clsListItem()
item.ItemName = "2";
item.ItemValue="2";
dtSource.Add(item);control.DataSource = dtSource;//control是一个combobox对象
control.DisplayMember = "ItemName";
control.ValueMember = "ItemValue";
Type controlType = control.GetType();
PropertyInfo controlProperty =controlType.GetProperty("SelectedValue", typeof(object));
controlProperty.SetValue(control, 1, null);
}
}
}
control.GetType().GetProperty("SelectedIndex").SetValue(control, 0, null);
设置selectedindex而不是selectedvalue,或者设置text也行
我现在不是要用selectedindex,text,而是要用selectedvlaue ,我现在就是要找不能用selectedvlaue的原因,按照正常情况,有设置datasource和DisplayMember,ValueMember后是可以用
selectedvlaue的