自定义控件,自定义视图状态,复杂属性
来源:互联网 发布:jquery.modal.js下载 编辑:程序博客网 时间:2024/05/19 20:42
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Collections;
namespace myWebControls.Menu_v2
{
[ParseChildren(true)]
public class Menu_v2 : Panel
{
[TypeConverter(typeof(StringArrayConverter))]
public string[] AAA
{
get
{
object obj = ViewState["AAA"];
return obj == null ? null : (string[])obj;
}
set { ViewState["AAA"] = value; }
}
BackStyle backstyle;
[PersistenceMode(PersistenceMode.InnerProperty)]
public BackStyle BBB
{
get {
if (backstyle == null)
{
backstyle = new BackStyle();
if (IsTrackingViewState)
((IStateManager)backstyle).TrackViewState();
}
return backstyle;
}
}
protected override void LoadViewState(object savedState)
{
Pair p = savedState as Pair;
if (p != null)
{
base.LoadViewState(p.First);
((IStateManager)BBB).LoadViewState(p.Second);
return;
}
base.LoadViewState(savedState);
}
protected override object SaveViewState()
{
object baseState = base.SaveViewState();
object thisState = null;
if (backstyle != null)
thisState = ((IStateManager)backstyle).SaveViewState();
if (thisState != null)
return new Pair(baseState, thisState);
else
return baseState;
}
protected override void TrackViewState()
{
if (backstyle != null)
((IStateManager)backstyle).TrackViewState();
base.TrackViewState();
}
public override void RenderControl(HtmlTextWriter writer)
{
base.RenderControl(writer);
writer.Write("ABCDEFG");
writer.Write(BBB.BackColor.ToString());
}
}
[TypeConverter(typeof(ExpandableObjectConverter))]
public class BackStyle:IStateManager
{
public BackStyle(){}
[NotifyParentProperty(true)]
public System.Drawing.Color BackColor
{
get { return ViewState["BackColor"]==null ? System.Drawing.Color.Black:(System.Drawing.Color)ViewState["BackColor"]; }
set { ViewState["BackColor"] = value; }
}
private bool _isTrackingViewState;
private StateBag _viewState;
protected StateBag ViewState
{
get
{
if (_viewState == null)
{
_viewState = new StateBag(false);
if (_isTrackingViewState) ((IStateManager)_viewState).TrackViewState();
}
return _viewState;
}
}
#region IStateManager 成员
[Browsable(false)]
public bool IsTrackingViewState
{
get { return _isTrackingViewState; }
}
public void LoadViewState(object state)
{
if (state != null)
((IStateManager)ViewState).LoadViewState(state);
}
public object SaveViewState()
{
object savedState = null;
if (_viewState != null)
savedState =((IStateManager)_viewState).SaveViewState();
return savedState;
}
public void TrackViewState()
{
_isTrackingViewState = true;
if (_viewState != null)
((IStateManager)_viewState).TrackViewState();
}
internal void SetDirty()
{
_viewState.SetDirty(true);
}
#endregion
}
}
- 自定义控件,自定义视图状态,复杂属性
- 自定义控件开发之----自定义视图状态
- android 自定义视图控件属性
- 自定义控件----自定义属性
- ASP.NET自定义控件复杂属性声明持久性浅析
- unity3d 自定义属性视图
- 自定义视图属性
- android:自定义视图属性
- Android视图自定义属性
- android---自定义视图属性
- AndroidStudio 视图自定义属性
- asp.net控件开发基础(11) --------自定义视图状态管理
- 自定义控件:自定义组合控件+自定义属性
- 自定义控件圆形ImageView-复杂
- 复杂自定义控件---自定义ViewPager的实现
- asp.net控件开发基础(5) ----------简单介绍自定义控件简单属性和复杂属性
- asp.net控件开发基础(5) ----------简单介绍自定义控件简单属性和复杂属性
- android自定义控件状态
- 一个利用线程注入进行互相监控而防止程序被终止的程序
- 配置config.bib的注意事项以及错误分析——自己都要顶!
- 服务中找不到"MYSQL"的解决方案
- 奇怪!
- 求救:perl中的CGI问题。
- 自定义控件,自定义视图状态,复杂属性
- 2008.10.30
- WINDOWS.h already included MFC apps must not "#include 'window.h'"
- 初学Hibernate问题
- JAVA面试题解惑系列(一)——类的初始化顺序
- Linux系统调用函数列表转
- 删除活动目录中残留的域控信息
- http://blog.youxu.info/2008/10/30/my-girlfriends-comments-on-programming-langs/
- struct stat结构分析函数转