读书人

这个小弟我自己编的自定义控件

发布时间: 2012-02-14 19:19:19 作者: rapoo

请高手看看这个我自己编的自定义控件
我这个控件可以调用,就是无法正确显示控件.请高手帮忙看看!
namespace mycontrol
{
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

[DefaultProperty( "Text ")]
[ToolboxData( " <{0}:mycontrol runat=server> </{0}:mycontrol> ")]

public class mycontrol : CompositeControl
{

[Bindable(true)]
[Category( "Appearance ")]
[DefaultValue( " ")]
[Localizable(true)]
public string textbox1
{
get
{
String s = (String)ViewState[ "Text "];
return ((s == null) ? String.Empty : s);
}

set
{
ViewState[ "Text "] = value;
}
}
public string textbox2
{
get
{
String s = (String)ViewState[ "Text "];
return ((s == null) ? String.Empty : s);
}

set
{
ViewState[ "Text "] = value;
}


}
protected override void CreateChildControls()
{
this.Controls.Clear();
Label lab1 = new Label();
lab1.Text = "用户名 ";
this.Controls.Add(lab1);
Literal lit = new Literal();
lit.Text = ": ";
this.Controls.Add(lit);
TextBox textbox1 = new TextBox();
textbox1.ID= "tb1 ";
textbox1.Text = textbox1.ToString();
this.Controls.Add(textbox1);
Literal lit1 = new Literal();
lit1.Text = " <\br> ";
Label lab2 = new Label();
lab2.Text = "密码 ";
this.Controls.Add(lab2);
Literal lit2 = new Literal();
lit2.Text = ": ";
this.Controls.Add(lit2);
TextBox textbox2 = new TextBox();
textbox2.ID = "tb2 ";
textbox2.Text = textbox2.ToString();
this.Controls.Add(textbox2);
Literal lit4 = new Literal();
lit4.Text = " <\br> ";
Button button1 = new Button();


button1.Text = "确定 ";
this.Controls.Add(button1);
Literal lit3 = new Literal();
lit3.Text = " ";
Button button2 = new Button();
button2.Text = "取消 ";
this.Controls.Add(button2);
base.CreateChildControls();

}
protected override void Render(HtmlTextWriter writer)
{
if (ChildControlsCreated == false)
{
this.CreateChildControls();
this.RenderContents(writer);
}
}
}
}

[解决办法]
你这个是复合控件,不过根据你的需求来看不需要做成复合控件,直接在render里输出那堆东西就可以了,如果要post的话,就继承一个IPostBackEventHandler接口就可以了
[解决办法]
String s = (String)ViewState[ "Text "];
==================
这句有错,若果viewstate[ "text "]为空强制转化,会引发异常
[解决办法]
textbox1和textbox2操纵的是同一个viewstate对象

[解决办法]
建义LZ在重写Render时调用下Base.Render()

读书人网 >.NET

热点推荐