我看到书上有这样一个例子
protected override void LoadViewState(object savedState) 
{
 if (savedState == null) 
 {
  base.LoadViewState(null);
  return;
 }
 if (savedState != null) 
 {
  object[] myState = (object[])savedState;
  if (myState.Length != 4) 
  {
    throw new ArgumentException("Invalid view state");
  }
  base.LoadViewState(myState[0]);
  if (myState[1] != null)
   ((IStateManager)ButtonStyle).LoadViewState(myState[1]);
  if (myState[2] != null)
   ((IStateManager)LabelStyle).LoadViewState(myState[2]);
  if (myState[3] != null)
   ((IStateManager)TextBoxStyle).LoadViewState(myState[3]);
  }
}
我不明白myState[0],myState[1],myState[2],myState[3]对应什么值???

解决方案 »

  1.   

    你看一下 SaveViewState 方法
    LoadViewState(object savedState) savedState 的值是 SaveViewState 方法返回的值。
      

  2.   

    LoadViewState函数的传入参数:savedState,是一个数组,myState[0]...是各个元素
      

  3.   

    protected override object SaveViewState() 
    {
     object[] myState = new object[4];
     myState[0] = base.SaveViewState();
     myState[1] = (_buttonStyle != null) ? ((IStateManager)_buttonStyle).SaveViewState() : null;
     myState[2] = (_labelStyle != null) ? ((IStateManager)_labelStyle).SaveViewState() : null;
     myState[3] = (_textBoxStyle != null) ? ((IStateManager)_textBoxStyle).SaveViewState() : null;
         
     for (int i = 0; i < 4; i++) 
     {
      if (myState[i] != null) 
      {
       return myState;
      }
     }
     return null;
    }这是它的SaveViewState() 方法,
    myState[0] = base.SaveViewState(); 在这里调用基类的SaveViewState()是规则还是有其他含义!
     for (int i = 0; i < 4; i++) 
     {
      if (myState[i] != null) 
      {
       return myState;
      }
     }
    如果myState[0]!=null就返回myState数组,这是为什么?