UserControlDocumentDesigner.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WinForms / System / WinForms / Design / UserControlDocumentDesigner.cs / 1 / UserControlDocumentDesigner.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

/* 
 */ 
namespace System.Windows.Forms.Design {
    using System.Collections; 
    using System.ComponentModel;
    using System.Runtime.Serialization;
    using System.Diagnostics;
    using System; 
    using System.Design;
    using System.ComponentModel.Design; 
    using Microsoft.Win32; 
    using System.Drawing;
    using System.Drawing.Design; 
    using System.IO;
    using System.Windows.Forms;

    ///  
    /// 
    ///    Provides a base implementation of a designer for user controls. 
    ///  
    [
    ToolboxItemFilter("System.Windows.Forms.UserControl", ToolboxItemFilterType.Custom), 
    ToolboxItemFilter("System.Windows.Forms.MainMenu", ToolboxItemFilterType.Prevent)
    ]
    internal class UserControlDocumentDesigner : DocumentDesigner {
 
        public UserControlDocumentDesigner() {
            AutoResizeHandles = true; 
        } 

        ///  
        ///     On user controls, size == client size.  We do this so we can mess around
        ///     with the non-client area of the user control when editing menus and not
        ///     mess up the size property.
        ///  
        private Size Size {
            get { 
                return Control.ClientSize; 
            }
            set { 
                Control.ClientSize = value;
            }
        }
 
        internal override bool CanDropComponents(DragEventArgs de) {
            bool canDrop = base.CanDropComponents(de); 
 
            if (canDrop) {
                // Figure out if any of the components in a main menu item. 
                // We don't like main menus on UserControlDocumentDesigner.
                //
                OleDragDropHandler ddh = GetOleDragHandler();
                object[] dragComps = ddh.GetDraggingObjects(de); 

                if (dragComps != null) { 
                    IDesignerHost host = (IDesignerHost)GetService(typeof(IDesignerHost)); 
                    for (int  i = 0; i < dragComps.Length; i++) {
                        if (host == null || dragComps[i] == null || !(dragComps[i] is IComponent)) { 
                            continue;
                        }

                        if (dragComps[i] is MainMenu) 
                            return false;
                    } 
                } 
            }
 
            return canDrop;
        }

        ///  
        /// 
        ///      Allows a designer to filter the set of properties 
        ///      the component it is designing will expose through the 
        ///      TypeDescriptor object.  This method is called
        ///      immediately before its corresponding "Post" method. 
        ///      If you are overriding this method you should call
        ///      the base implementation before you perform your own
        ///      filtering.
        ///  
        protected override void PreFilterProperties(IDictionary properties) {
            PropertyDescriptor prop; 
 
            base.PreFilterProperties(properties);
 
            // Handle shadowed properties
            //
            string[] shadowProps = new string[] {
                "Size" 
            };
 
            Attribute[] empty = new Attribute[0]; 

            for (int i = 0; i < shadowProps.Length; i++) { 
                prop = (PropertyDescriptor)properties[shadowProps[i]];
                if (prop != null) {
                    properties[shadowProps[i]] = TypeDescriptor.CreateProperty(typeof(UserControlDocumentDesigner), prop, empty);
                } 
            }
        } 
    } 
}
 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK