// 获得表示控件状态的字符串 public static string GetUiState(List <object> controls) { StringBuilder text = new StringBuilder(); foreach (object obj in controls) { if (text.Length > 0) { text.Append(";"); } object control = obj; // 注:本来集合中没有必要添加 ControlWrapper 对象,但可能出于和 SetUiState() 对称的角度,会复制同样的代码使用 ControlWrapper,等于缺省值部分这里无用罢了 //object default_value = null; if (obj is ControlWrapper) { ControlWrapper wrapper = obj as ControlWrapper; control = wrapper.Control as object; //default_value = wrapper.DefaultValue; } if (control is ListView) { text.Append( GetListViewState(control as ListView) ); } else if (control is SplitContainer) { text.Append( GetSplitContainerState(control as SplitContainer) ); } else if (control is ToolStripButton) { text.Append( GetToolStripButtonState(control as ToolStripButton) ); } else if (control is NumericUpDown) { text.Append( GetNumericUpDownState(control as NumericUpDown) ); } else if (control is TabComboBox) { text.Append( GetTabComboBoxState(control as TabComboBox) ); } else if (control is ComboBox) { text.Append( GetComboBoxState(control as ComboBox) ); } else if (control is ComboBoxText) { text.Append( GetComboBoxTextState(control as ComboBoxText) ); } else if (control is TabControl) { text.Append( GetTabControlState(control as TabControl) ); } else if (control is CheckBox) { text.Append( GetCheckBoxState(control as CheckBox) ); } else if (control is CheckedListBox) { text.Append( GetCheckListBoxState(control as CheckedListBox) ); } else if (control is TextBox) { text.Append( GetTextBoxState(control as TextBox) ); } else if (control is SavePassword) { text.Append( GetSavePasswordState(control as SavePassword) ); } else if (control is DpTable) { text.Append( GetDpTableState(control as DpTable) ); } else if (control is RadioButton) { text.Append( GetRadioButtonState(control as RadioButton) ); } else if (control is Form) { text.Append( GetFormState(control as Form) ); } else if (control is CheckedComboBox) { text.Append( GetCheckedComboBoxState(control as CheckedComboBox) ); } else { throw new ArgumentException("不支持的类型 " + control.GetType().ToString()); } } return(text.ToString()); }
// 恢复控件的尺寸状态 // 字符串里面每个分号间隔的部分,负责定义一个控件的状态 public static void SetUiState(List <object> controls, string strStates) { string[] sections = strStates.Split(new char[] { ';' }); int i = 0; foreach (object obj in controls) { #if NO if (i >= sections.Length) { break; } #endif string strState = ""; if (i < sections.Length) { strState = sections[i]; } object control = obj; object default_value = null; if (obj is ControlWrapper) { ControlWrapper wrapper = obj as ControlWrapper; control = wrapper.Control as object; default_value = wrapper.DefaultValue; } if (control is ListView) { SetListViewState(control as ListView, strState); } else if (control is SplitContainer) { SetSplitContainerState(control as SplitContainer, strState); } else if (control is ToolStripButton) { SetToolStripButtonState(control as ToolStripButton, strState); } else if (control is NumericUpDown) { SetNumericUpDownState(control as NumericUpDown, strState); } else if (control is TabComboBox) { SetTabComboBoxState(control as TabComboBox, strState); } else if (control is ComboBox) { SetComboBoxState(control as ComboBox, strState, default_value); } else if (control is ComboBoxText) { SetComboBoxTextState(control as ComboBoxText, strState, default_value); } else if (control is TabControl) { SetTabControlState(control as TabControl, strState); } else if (control is CheckBox) { SetCheckBoxState(control as CheckBox, strState, default_value); } else if (control is CheckedListBox) { SetCheckedListBoxState(control as CheckedListBox, strState); } else if (control is TextBox) { SetTextBoxState(control as TextBox, strState, default_value); } else if (control is SavePassword) { SetSavePasswordState(control as SavePassword, strState); } else if (control is DpTable) { SetDpTableState(control as DpTable, strState); } else if (control is RadioButton) { SetRadioButtonState(control as RadioButton, strState); } else if (control is Form) { SetFormState(control as Form, strState); } else if (control is CheckedComboBox) { SetCheckedComboBoxState(control as CheckedComboBox, strState, default_value); } else { throw new ArgumentException("不支持的类型 " + control.GetType().ToString()); } i++; } }