如果窗体上有几个控件,PictureBox或者TextBox,我想以它们的某些属性为参数传入一个方法中,然后在方法里改变这些属性的值应该怎么做?比如DataRow drow=...;void setValue(object obj,string BindString)
{
obj = drow[BindString];
}

解决方案 »

  1.   

    属性其实本身就是个类型哦,当然可以当参数来用了,
    还有要实现你这个功能,介意你去看看out ref类型的参数,一看就明白了例子如下:
            private void button2_Click(object sender, EventArgs e)
            {
                haha(ref label1);
            }
            private void haha(ref Label label1)
            {
                label1.Text = "xxx";
            }
      

  2.   

    但是out要初始化,而ref又传不过去我才问这个的..........而且要注意的是,参数传递不能用Cnotrol作接口,因为不一定要绑定到哪个控件的什么属性上.有可能传入的是textBox1.Text,也有可能传入的是pictureBox1.Image
      

  3.   

    还有个问题就是:
    传入的实参必须是指向对象属性的一个引用,因为我要将其存入Hashtable中.........
    总之这个问题非常麻烦
      

  4.   

    ref可以传的,你肯定是其他地方错了,你可以建的新工程,用我上面的例子,我测试过,Ok
      

  5.   

    首先,属性或索引器不能使用ref传入其次,就算是我传入的是ref,但是我还要将这个对象加到Hashtable中,此时的参数可就不是ref了 public void Add(ref object obj,string BindString)
    {
    this.syncControls.Add(obj);//此处传入的并非ref
    this.syncInfo.Add(obj,BindString);//此处传入的并非ref
    }
      

  6.   

    可能我没有把问题说清楚.
    我现在作的是一个可以将控件的某些属性绑定到一个数据源上的类库,这个类必须能够随时指向需要绑定的控件的属性上,也就是说,像上面给出的函数的使用方法应该为:DataSync DS = new DataSync();
    DS.Add(this.textBox1.Text,"列1");
    DS.Add(this.pictureBox1.Image,"图像");它是要自由绑定的,并且不判断数据格式.
      

  7.   

    to LZ:为什么在你的add里要修改传入的参数?
    从语义的角度你这个add都是说不通的。应该是改好了属性再加进去。请说说你在add里要修改入参的理由?
      

  8.   

    是这样的,有时候我要给控件的text属性赋值,有时候要给控件的Image属性赋值,而这个Add方法是不知道要向哪里赋值的,只能通过参数传递进来,所以直接传递控件就别想了
      

  9.   

    PropertyDescriptor好像是属性更改事件的外界绑定,但我要的正好相反,是已有事件处理中对控件属性的修改
      

  10.   

    lz改成这样就可以了,在IDE内部的很多地方都是这么做的。DataRow drow=...;void setValue(object obj, string propertyName, string BindString)
    {
        PropertyDescriptor pd = TypeDescriptor.GetProperties(obj)[propertyName];
        if(pd ! null)
        {
           pd.SetValue(obj, drow[BindString]);
        }
    }
      

  11.   

    现在有个问题就是把图片放到DataTable中之后,就不能被PictureBox.Image引用了,不知道是为什么?
      

  12.   

    DataTable里的数据都是装箱或转换成object类型的,使用的时候要加强制类型转换操作符拆箱