예제 #1
0
 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);
                 }
             }
         }
     }
 }
예제 #2
0
        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);
                }
            }
        }