4.给控件添加树状属性

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
namespace CustomControls
...{
/**//// <summary>
/// Summary description for LabelTextBox
/// </summary>
public class LabelTextBox : Control
...{
private string _labelText="LabelText";
private string _textBoxText = "";
private SizeInfo _size;
[Browsable(true),
Description("获取和设置Label文本"),
DefaultValue("LabelText"),
Category("Appearance")
]
public virtual string Title
...{
get ...{ return _labelText; }
set ...{ _labelText = value; }
}
[Browsable(true),
Description("获取和设置TextBox文本"),
DefaultValue(""),
Category("Appearance")
]
public virtual string Text
...{
get ...{ return _textBoxText; }
set ...{ _textBoxText = value; }
}
[Browsable(true),
Description("获取和设置TextBox的显示方式"),
DefaultValue(""),
Category("Appearance")
]
public virtual TextBoxMode TextMode
...{
get
...{
object _textMode = ViewState["TextMode"];
if (_textMode == null)
return TextBoxMode.SingleLine;
else
return (TextBoxMode)_textMode;
}
set
...{
ViewState["TextMode"] = value;
}
}
[Browsable(true),
Description("获取和设置控件的大小"),
DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
NotifyParentProperty(true),
Category("Appearance")
]
public virtual SizeInfo Size
...{
get 
...{
if (_size == null)
_size = new SizeInfo();
return _size;
}
}
protected override void Render(HtmlTextWriter writer)
...{
Page.VerifyRenderingInServerForm(this);
if (TextMode == TextBoxMode.SingleLine)
...{
writer.Write("<table style='width:180px;height:25px;border-width:0;'>");
writer.Write("<tr>");
writer.Write("<td><strong>" + _labelText + "</strong></td>");
writer.Write("<td><input name='TextBox' id='TextBox' type='text' /></td>");
writer.Write("</tr>");
writer.Write("</table>");
}
else if (TextMode == TextBoxMode.MultiLine)
...{
writer.Write("<table style='width:180px;height:25px;border-width:0;'>");
writer.Write("<tr valign='top'>");
writer.Write("<td><strong>" + _labelText + "</strong></td>");
writer.Write("<td><textarea name='TextBox' id='TextBox' /></td>");
writer.Write("</tr>");
writer.Write("</table>");
}
else if (TextMode == TextBoxMode.Password)
...{
writer.Write("<table style='width:180px;height:25px;border-width:0;'>");
writer.Write("<tr>");
writer.Write("<td><strong>" + _labelText + "</strong></td>");
writer.Write("<td><input name='TextBox' id='TextBox' type='password' /></td>");
writer.Write("</tr>");
writer.Write("</table>");
}
base.Render(writer);
}
}
[TypeConverter(typeof(ExpandableObjectConverter))]
public class SizeInfo
...{
private int _width;
private int _height;
[NotifyParentProperty(true)]
public int Width
...{
get ...{ return _width; }
set ...{ _width = value; }
}
[NotifyParentProperty(true)]
public int Height
...{
get ...{ return _height; }
set ...{ _height = value; }
}
}
}
本文介绍了一种自定义的ASP.NET Web控件LabelTextBox,该控件集成了Label和TextBox的功能,并支持多种TextBox模式,如单行、多行及密码输入。通过设置属性可以灵活调整控件的外观。
11

被折叠的 条评论
为什么被折叠?



