174 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			174 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Text;
 | 
						|
using System.Windows.Forms.Design;
 | 
						|
using DevComponents.DotNetBar.Controls;
 | 
						|
using System.ComponentModel;
 | 
						|
using System.Collections;
 | 
						|
using System.Windows.Forms;
 | 
						|
using System.ComponentModel.Design;
 | 
						|
using DevComponents.Editors;
 | 
						|
 | 
						|
namespace DevComponents.DotNetBar.Design
 | 
						|
{
 | 
						|
    /// <summary>
 | 
						|
    /// Represents Windows Forms designer for the ComboBoxEx control.
 | 
						|
    /// </summary>
 | 
						|
    public class ComboBoxExDesigner : ControlDesigner
 | 
						|
    {
 | 
						|
#if FRAMEWORK20
 | 
						|
        public override void InitializeNewComponent(IDictionary defaultValues)
 | 
						|
        {
 | 
						|
            base.InitializeNewComponent(defaultValues);
 | 
						|
            SetDesignTimeDefaults();
 | 
						|
        }
 | 
						|
#else
 | 
						|
		public override void OnSetComponentDefaults()
 | 
						|
		{
 | 
						|
			base.OnSetComponentDefaults();
 | 
						|
			SetDesignTimeDefaults();
 | 
						|
		}
 | 
						|
#endif
 | 
						|
 | 
						|
        public override void Initialize(IComponent component)
 | 
						|
        {
 | 
						|
            base.Initialize(component);
 | 
						|
            if (component.Site!=null && !component.Site.DesignMode)
 | 
						|
                return;
 | 
						|
 | 
						|
            // If our component is removed we need to clean-up
 | 
						|
            IComponentChangeService cc = (IComponentChangeService)GetService(typeof(IComponentChangeService));
 | 
						|
            if (cc != null)
 | 
						|
            {
 | 
						|
                cc.ComponentRemoving += new ComponentEventHandler(this.OnComponentRemoved);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        protected override void Dispose(bool disposing)
 | 
						|
        {
 | 
						|
            IComponentChangeService cc = (IComponentChangeService)GetService(typeof(IComponentChangeService));
 | 
						|
            if (cc != null)
 | 
						|
                cc.ComponentRemoved -= new ComponentEventHandler(this.OnComponentRemoved);
 | 
						|
 | 
						|
            base.Dispose(disposing);
 | 
						|
        }
 | 
						|
 | 
						|
        private void SetDesignTimeDefaults()
 | 
						|
        {
 | 
						|
            ComboBoxEx c = this.Control as ComboBoxEx;
 | 
						|
            c.DisplayMember = "Text";
 | 
						|
            c.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
 | 
						|
            c.ItemHeight = c.GetFontHeight() + 1;
 | 
						|
            c.Style = eDotNetBarStyle.StyleManagerControlled;
 | 
						|
#if FRAMEWORK20
 | 
						|
            c.FormattingEnabled = true;
 | 
						|
#endif
 | 
						|
 | 
						|
            PropertyDescriptor d = TypeDescriptor.GetProperties(c)["Text"];
 | 
						|
            if (d != null && d.PropertyType == typeof(string) && !d.IsReadOnly && d.IsBrowsable)
 | 
						|
            {
 | 
						|
                d.SetValue(c, "");
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
#if FRAMEWORK20
 | 
						|
        private DesignerActionListCollection m_ActionLists;
 | 
						|
        public override DesignerActionListCollection ActionLists
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                if (m_ActionLists == null)
 | 
						|
                {
 | 
						|
                    m_ActionLists = new DesignerActionListCollection();
 | 
						|
                    object o = this.GetType().Assembly.CreateInstance("System.Windows.Forms.Design.ListControlBoundActionList", false, System.Reflection.BindingFlags.NonPublic, null, new object[] { this }, null, null);
 | 
						|
                    if(o!=null)
 | 
						|
                        m_ActionLists.Add(o as DesignerActionList);
 | 
						|
                }
 | 
						|
                return m_ActionLists;
 | 
						|
            }
 | 
						|
        }
 | 
						|
#endif
 | 
						|
        public override SelectionRules SelectionRules
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                SelectionRules r = base.SelectionRules;
 | 
						|
                ComboBoxEx c = this.Control as ComboBoxEx; ;
 | 
						|
                PropertyDescriptor d = TypeDescriptor.GetProperties(c)["DropDownStyle"];
 | 
						|
                if (d == null)
 | 
						|
                    return r;
 | 
						|
 | 
						|
                ComboBoxStyle style = (ComboBoxStyle)d.GetValue(c);
 | 
						|
                if (style != ComboBoxStyle.DropDown && style != ComboBoxStyle.DropDownList)
 | 
						|
                {
 | 
						|
                    return r;
 | 
						|
                }
 | 
						|
                return (r & ~(SelectionRules.BottomSizeable | SelectionRules.TopSizeable));
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #if FRAMEWORK20
 | 
						|
        protected override void PreFilterProperties(System.Collections.IDictionary properties)
 | 
						|
        {
 | 
						|
            base.PreFilterProperties(properties);
 | 
						|
 | 
						|
            properties["FlatStyle"] = TypeDescriptor.CreateProperty(
 | 
						|
                this.GetType(),
 | 
						|
                "FlatStyle",
 | 
						|
                typeof(FlatStyle),
 | 
						|
                new Attribute[] { new BrowsableAttribute(true), new DefaultValueAttribute(FlatStyle.Flat)});
 | 
						|
        }
 | 
						|
        
 | 
						|
 | 
						|
        [Browsable(true), DefaultValue(FlatStyle.Flat), Description("Gets or sets the combo box flat style")]
 | 
						|
        public FlatStyle FlatStyle
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                ComboBox cb = this.Control as ComboBox;
 | 
						|
                return cb.FlatStyle;
 | 
						|
            }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                ComboBox cb = this.Control as ComboBox;
 | 
						|
                cb.FlatStyle = value;
 | 
						|
            }
 | 
						|
        }
 | 
						|
        #endif
 | 
						|
 | 
						|
		public override ICollection AssociatedComponents
 | 
						|
		{
 | 
						|
			get
 | 
						|
			{
 | 
						|
				ArrayList al = new ArrayList(base.AssociatedComponents);
 | 
						|
				ComboBoxEx cex = this.Component as ComboBoxEx;
 | 
						|
				foreach(object o in cex.Items)
 | 
						|
				{
 | 
						|
					if (o is ComboItem)
 | 
						|
					{
 | 
						|
						al.Add(o);
 | 
						|
					}
 | 
						|
				}
 | 
						|
				return al;
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		private void OnComponentRemoved(object sender, ComponentEventArgs e)
 | 
						|
		{
 | 
						|
			if (e.Component == this.Component)
 | 
						|
			{
 | 
						|
				ComboBoxEx cex = this.Component as ComboBoxEx;
 | 
						|
				IDesignerHost dh = GetService(typeof(IDesignerHost)) as IDesignerHost;
 | 
						|
				if (dh == null) return;
 | 
						|
				foreach (object o in cex.Items)
 | 
						|
				{
 | 
						|
					if (o is ComboItem)
 | 
						|
					{
 | 
						|
						ComboItem ci = o as ComboItem;
 | 
						|
						dh.DestroyComponent(ci);
 | 
						|
					}
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
    }
 | 
						|
}
 |