各位好!
我自定义了一个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);
}
}
}

解决方案 »

  1.   

    我试了,是可以的,你是不是没调用test() 
      

  2.   


    control.GetType().GetProperty("SelectedIndex").SetValue(control, 0, null);
    设置selectedindex而不是selectedvalue,或者设置text也行
      

  3.   


    我现在不是要用selectedindex,text,而是要用selectedvlaue ,我现在就是要找不能用selectedvlaue的原因,按照正常情况,有设置datasource和DisplayMember,ValueMember后是可以用
    selectedvlaue的