vs.net2003中用c#开发Winform的用户控件/自定义控件的属性问题(100分送上)
各位大侠:
小弟想设计2个用户控件,假定A为控件1,B为控件2,A和B各自含有一个下拉列表(ComboBox)控件。
A、B这两个控件有二级联动的关系,即在A中的下拉列表控件选定了某项后,B中的下拉列表控件会自动生成对应的选项。
简单的方法是将A、B两个控件做成一个用户控件,但是出于灵活性的考虑我必须做成两个控件。这就需要在其中一个控
件中设置一个属性来指向另外的控件。这个属性的效果就像在Webform中的验证控件具有的ControlToValidate属性一样,可
以列出当前页面上的其他控件名称。(如RequiredFieldValidator的ControlToValidate属性那样)。
我了解到:
1、如果是简单的单字段值的属性可以用下面的方法实现。
private string XXXvalue = null;
public string UserControlXXX
{
get{return XXXvalue}
set{this.XXXvalue = value}
}
2、固定项目(在属性窗口中的)的下拉列表可以用枚举类型实现。
3、用UITypeEdit实现自定义编辑窗口的。
但2的方法不能实现动态获取Winform中父容器的控件,3的方法优点过于奢侈,我想要的仅仅是个下拉列表就可以了。
而且在设计阶段,由于整个Winform窗体及其中的控件并没有实例化,使用xxxControl.parent.Controls来获取容器内控件的集合是不可以的。
问题归纳:
(1)用户控件或自定义控件中,这种动态下拉列表式的属性(property,非attributes)如何开发;
(2)如何在设计阶段获取父容器中的控件集合;
由于这种类型的属性在Webform中的验证控件中已经得到实现,恳请各位高手、大师们给小弟提供一点指引,感激不禁!!!
------解决方案--------------------
照平常那样写就可以了。
C# code
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
UserControl2 item;
public UserControl2 Item//UserControl1里面有个属性,这个属性是UserControl2类型的。
{
get { return item; }
set { item = value; }
}
}
------解决方案--------------------
如5楼所说, 直接写就行, VS2005会帮你完成这些事情的, 只要你的Property的Browsable的就行
------解决方案--------------------
(1)用户控件或自定义控件中,这种动态下拉列表式的属性(property,非attributes)如何开发;
---------------------------------------------
public partial class UserControl1 : UserControl
可以对控件继承重写
(2)如何在设计阶段获取父容器中的控件集合;
--------------------------------------
Webform中可以对网页的所有控件进行遍历,但Winform我没试过