自定义控件有一个属性是用结构体表示的,
例如:自定义控件myct

public struct myctAttri
{
    public string cName;
    public int cType;
    public float cValue;
}
public List<myctAttri> myct_v = new List<myctAttri>();
public List<curveAttri> curves
{
    get { return curveList; }
    set { curveList = value;}
}

这样写对吗?
在使用myct控件的时候需要包含若干myctAttri结构体类型的数据,添加数据或修改数据,怎么用?

解决方案 »

  1.   

    public List <curveAttri> mycts 

        get { return curveList; } 
        set { curveList = value;} 

    是改过的,应该是
    public List <myctAttri> curves 

        get { return myct_v; } 
        set { myct_v = value;} 

      

  2.   

    这个问题我也遇到过,不知道怎么解决,别人都说我的能运行  可我就是运行不起来
    http://topic.csdn.net/u/20091215/15/ee8830a2-8afd-462e-96d7-ec205f46fd80.html
      

  3.   


    这样写应该是没问题,以前虽然没有用过自定义的,但是用SIZE这些系统自带的结构体时,我就是这样做的
      

  4.   

    自定义控件myct
     
    public struct myctAttri 

        public string cName; 
        public int cType; 
        public float cValue; 

    public List <myctAttri> myct_v = new List <myctAttri>(); 
    public List <myctAttri> curves 

        get { return myct_v; } 
        set { myct_v = value;} 

    如果自定义控件myct 时这样写是对的在使用myct控件的时候,例如在我的testForm中拖入了myct控件(myct1),我要给myct1的curves属性变量(是这么叫吧?)添加数据或修改数据,也就是我的myct1要包含几个myctAttri结构体数据,这要怎么用?我用的时候只能看到myct1.curve,myct1.curve下边只能add,remove这些了,结构体内的变量怎么分别赋值、修改等等?
      

  5.   

    用泛型集合的索引器访问里面的集合youClassObj.ListPropertys[index].SomeItem
      

  6.   

    我在调用myct1.curve时,myct1.curve.后边提示Add等等就是list的操作方法了,比如myct1.curve.Add后边提示的是“void List<myctAttri>.Add(myctl.myct.myctAttri item)将对象添加到System.Collections.Generic.List<T>的结尾处”,我看不懂,应该不会把myCtAttri结构体重新在这里也定义一下吧,那结构体怎么用?
      

  7.   

    感谢9楼的assky124,
    原来这么用阿
    myct1.curve[0].cName="";
    myct1.curve[0].cType=1;
    myCt1.curve[0].cValue=0.0f;
    ...
    就是有一点点麻烦,要把每个节点的结构体数据一个个的赋值修改等等
      

  8.   

    我这样用
    myct1.curve[0].cName=""; 
    myct1.curve[0].cType=1; 
    myCt1.curve[0].cValue=0.0f;
    ...
    怎么报错啊?
    “无法修改System.Collections.Generic.List<myctl.myct.myctAttri>.this[int]的返回值,因为它不是变量”
      

  9.   

    增加
    myctAttri att = new myctAttri();
    attcName=""; 
    attcType=1; 
    attcValue=0.0f; 
    myct1.curves.Add(att);修改
    myctAttri att = myct1.curve[i].
    attcName=""; 
    attcType=1; 
    attcValue=0.0f; i对要修改的数据对应的索引
    因为此为值引用,所以修改的值会立即生效
      

  10.   

    我在自定义控件的结构体定义内部把其内部变量添加了
    public struct myctAttri
    {
       public string cName;
        public string thiscName
       {
          get { return cName; }
           set { cName = value; }
        }
    .........
    }在我的testForm中拖入了myct控件(myct1)后,这样调用:
    myCtl.plot.myctAttri at=new myCtl.plot.myctAttri();
    at.thiscName = "dasf";
    at.thiscType = 2;
    ...
    myct1.curve.Add(at);
    这样就可以使用了,我这样做出来结果了。不过还有一个关于自定义控件的小问题,我另开帖子提问吧,怕分太少提问太多不好。