private void SerializeZOrder(IDesignerSerializationManager manager, CodeStatementCollection statements, Control control) { using (CodeDomSerializerBase.TraceScope("ControlCodeDomSerializer::SerializeZOrder()")) { for (int i = control.Controls.Count - 1; i >= 0; i--) { Control component = control.Controls[i]; if ((component.Site != null) && (component.Site.Container == control.Site.Container)) { InheritanceAttribute attribute = (InheritanceAttribute)TypeDescriptor.GetAttributes(component)[typeof(InheritanceAttribute)]; if (attribute.InheritanceLevel != InheritanceLevel.InheritedReadOnly) { CodeExpression targetObject = new CodePropertyReferenceExpression(base.SerializeToExpression(manager, control), "Controls"); CodeMethodReferenceExpression expression2 = new CodeMethodReferenceExpression(targetObject, "SetChildIndex"); CodeMethodInvokeExpression expression = new CodeMethodInvokeExpression { Method = expression2 }; CodeExpression expression4 = base.SerializeToExpression(manager, component); expression.Parameters.Add(expression4); expression.Parameters.Add(base.SerializeToExpression(manager, 0)); CodeExpressionStatement statement = new CodeExpressionStatement(expression); statements.Add(statement); } } } } }
private void SerializeMethodInvocation(IDesignerSerializationManager manager, CodeStatementCollection statements, object control, string methodName, CodeExpressionCollection parameters, System.Type[] paramTypes, StatementOrdering ordering) { using (CodeDomSerializerBase.TraceScope("ControlCodeDomSerializer::SerializeMethodInvocation(" + methodName + ")")) { manager.GetName(control); paramTypes = ToTargetTypes(control, paramTypes); if (TypeDescriptor.GetReflectionType(control).GetMethod(methodName, BindingFlags.Public | BindingFlags.Instance, null, paramTypes, null) != null) { CodeMethodReferenceExpression expression2 = new CodeMethodReferenceExpression(base.SerializeToExpression(manager, control), methodName); CodeMethodInvokeExpression expression = new CodeMethodInvokeExpression { Method = expression2 }; if (parameters != null) { expression.Parameters.AddRange(parameters); } CodeExpressionStatement statement = new CodeExpressionStatement(expression); switch (ordering) { case StatementOrdering.Prepend: statement.UserData["statement-ordering"] = "begin"; break; case StatementOrdering.Append: statement.UserData["statement-ordering"] = "end"; break; } statements.Add(statement); } } }