自定义控件有一个属性是用结构体表示的,
例如:自定义控件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结构体类型的数据,添加数据或修改数据,怎么用?
例如:自定义控件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结构体类型的数据,添加数据或修改数据,怎么用?
{
get { return curveList; }
set { curveList = value;}
}
是改过的,应该是
public List <myctAttri> curves
{
get { return myct_v; }
set { myct_v = value;}
}
http://topic.csdn.net/u/20091215/15/ee8830a2-8afd-462e-96d7-ec205f46fd80.html
这样写应该是没问题,以前虽然没有用过自定义的,但是用SIZE这些系统自带的结构体时,我就是这样做的
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这些了,结构体内的变量怎么分别赋值、修改等等?
原来这么用阿
myct1.curve[0].cName="";
myct1.curve[0].cType=1;
myCt1.curve[0].cValue=0.0f;
...
就是有一点点麻烦,要把每个节点的结构体数据一个个的赋值修改等等
myct1.curve[0].cName="";
myct1.curve[0].cType=1;
myCt1.curve[0].cValue=0.0f;
...
怎么报错啊?
“无法修改System.Collections.Generic.List<myctl.myct.myctAttri>.this[int]的返回值,因为它不是变量”
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对要修改的数据对应的索引
因为此为值引用,所以修改的值会立即生效
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);
这样就可以使用了,我这样做出来结果了。不过还有一个关于自定义控件的小问题,我另开帖子提问吧,怕分太少提问太多不好。