用托管C++编写自定义Web组合控件
ureChildControls(); label->Text = value; } String *SearchControl::get_Value() { this->EnsureChildControls(); return textbox->Text; } void SearchControl::set_Value(String *value) { this->EnsureChildControls(); textbox->Text = value; } String *SearchControl::get_ButtonText() { this->EnsureChildControls(); return button->Text; } void SearchControl::set_ButtonText(String *value) { this->EnsureChildControls(); button->Text = value; } 上述代码最棘手的部分就是EnsureChildControls()方法,其保证了子控件在之前已经被创建,如果你不添加这个,设计器将会显示一个空白的自定义控件。 当你运行上述代码时,将会发现一些设计上的缺陷。首先,文本框总是同样大小,并且不能排列多于一个SearchControl实例的标签。为进行修正,要添加第四个服务端控件到自定义Web组合控件中,在此,表格(Table)可能是处理所有控件布局问题最好的方法:
为处理排列问题,需再再添加两个属性:LabelWidth和LabelAlign。LabelWidth保证了标签控件为一特定的单位长度,而LabelAlign允许标签使用HorizontalAlign枚举进行排列:
现在问题又有些棘手了,为指定标签的宽度与排列,可对表格单元格属性进行修改,但在单元格中并不包含标签自身。为简化起见,创建一个名为cellLabel的私有类变量,由其取代CreateChildControls()方法中的cell1,以下是LabelWidth与LabelAlign属性的实现代码:
处理文本框的缩放时,可使它完全充满包含其的单元格,这样,当表格缩放时,文本框也会跟着缩放。于是,当控件缩放时,文本框会随控件变化,或者你可以指定标签为控件的一个百分比,如30%,这样一来,当控件缩放时,标签与文本框都会基于百分比进行调整,以下是修改后的CreateChildControls()方法:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |