复合控件的开发心得
2004-09-30 11:10
423 查看
先还是看看这篇文章
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpcondevelopingcompositecontrols.asp
开发复合控件跟开发用户控件有一些不同。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconcompositecontrolvsusercontrol.asp
最近遇到一个问题:
在编辑web页面希望出现的是输入框,而在显示状态的时候,希望出现的Label来显示文字。
自己继承了一个Label完成这个要求
中间遇到了一些问题:
1 如果是开发复合控件,必须完成接口:System.Web.UI.INamingContainer interface
而这个接口并没有方法myText = new TextBox();
//myText.UniqueID 为null
this.Controls.Clear();
this.Controls.Add(myText);
//此时myText.UniqueID 不为null
3 子控件之间传递值的方式,可以有两种,
一种是通过post后,viewstat来读取
myText.Text = (String)ViewState[myText.UniqueID];
而另一种则是;通过post后Request类的方法读取
if(System.Web.HttpContext.Current.Request[myLabel.UniqueID]!=null)
myLabel.Text = System.Web.HttpContext.Current.Request[myLabel.UniqueID];
update 12:42
4 如果是重写了GetDesignTimeHtml方法,
需要重新启动vs.net,才能在设计时显示出更改后的方法。
MyEditLabel d = (MyEditLabel)this.Component;
string html ="";
if(d.Width!=Unit.Empty)
html = String.Format("<input type=text style="width:{0}px" >",d.Width.Value);
else
html = String.Format("<input type=text style="width:{0}px" >",80);
// html = "<input type=text style="width:64px" >";
return html;
5. 控件创建的顺序
=============================
CreateChildControls()
……》
页面的
MyEditLabel2.EditEnable = false;
……》
控件的属性被更改
=============================
根据这个顺序,
如果属性被更改后要起作用,实际上在set之后还需要加载一次
public override string Text
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpcondevelopingcompositecontrols.asp
开发复合控件跟开发用户控件有一些不同。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconcompositecontrolvsusercontrol.asp
最近遇到一个问题:
在编辑web页面希望出现的是输入框,而在显示状态的时候,希望出现的Label来显示文字。
自己继承了一个Label完成这个要求
中间遇到了一些问题:
1 如果是开发复合控件,必须完成接口:System.Web.UI.INamingContainer interface
而这个接口并没有方法myText = new TextBox();
//myText.UniqueID 为null
this.Controls.Clear();
this.Controls.Add(myText);
//此时myText.UniqueID 不为null
3 子控件之间传递值的方式,可以有两种,
一种是通过post后,viewstat来读取
myText.Text = (String)ViewState[myText.UniqueID];
而另一种则是;通过post后Request类的方法读取
if(System.Web.HttpContext.Current.Request[myLabel.UniqueID]!=null)
myLabel.Text = System.Web.HttpContext.Current.Request[myLabel.UniqueID];
update 12:42
4 如果是重写了GetDesignTimeHtml方法,
需要重新启动vs.net,才能在设计时显示出更改后的方法。
MyEditLabel d = (MyEditLabel)this.Component;
string html ="";
if(d.Width!=Unit.Empty)
html = String.Format("<input type=text style="width:{0}px" >",d.Width.Value);
else
html = String.Format("<input type=text style="width:{0}px" >",80);
// html = "<input type=text style="width:64px" >";
return html;
5. 控件创建的顺序
=============================
CreateChildControls()
……》
页面的
MyEditLabel2.EditEnable = false;
……》
控件的属性被更改
=============================
根据这个顺序,
如果属性被更改后要起作用,实际上在set之后还需要加载一次
public override string Text
相关文章推荐
- 复合控件开发中的一点心得
- 复合控件的开发心得
- swift开发笔记16 - 使用xib自定义一个控件(复合控件)
- asp .net 服务器控件开发心得
- Asp.net中复合控件的一些学习心得
- 复合控件的开发
- 用Visual C#开发简单的复合控件
- 安卓开发学习之018 创建复合控件
- ASP.NET复合控件开发
- GMap.NET地图开发控件使用心得
- [控件开发].NET复合控件开发随笔(一)
- 第二章 .Net 控件开发(WebForm) 开发自定义复合控件(3) 事件冒泡
- WPF下的地图开发控件(GMap.NET)使用心得—— GMap学习笔记(一)
- 用ATL开发复合控件
- WPF下的地图开发控件(GMap.NET)使用心得—— GMap学习笔记(二)
- MapInfo开发心得——控件篇【转】
- 复合控件开发列子
- 第二章 .Net 控件开发(WebForm) 开发自定义复合控件(2) 重写属性和方法
- ASP.NET 控件开发速成教程:生成复合控件
- 使用VB.NET开发复合控件