251 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			251 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
#if FRAMEWORK20
 | 
						|
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Text;
 | 
						|
using System.Windows.Forms.Design;
 | 
						|
using System.ComponentModel;
 | 
						|
using DevComponents.DotNetBar.Controls;
 | 
						|
using System.Collections;
 | 
						|
using DevComponents.DotNetBar.Rendering;
 | 
						|
using System.Drawing.Design;
 | 
						|
using System.ComponentModel.Design;
 | 
						|
using System.Reflection;
 | 
						|
using System.Windows.Forms;
 | 
						|
 | 
						|
namespace DevComponents.DotNetBar.Design
 | 
						|
{
 | 
						|
    public class MaskedTextBoxAdvDesigner : ControlDesigner
 | 
						|
    {
 | 
						|
        public override void InitializeNewComponent(IDictionary defaultValues)
 | 
						|
        {
 | 
						|
            base.InitializeNewComponent(defaultValues);
 | 
						|
            MaskedTextBoxAdv control = this.Control as MaskedTextBoxAdv;
 | 
						|
            control.BackgroundStyle.Class = ElementStyleClassKeys.TextBoxBorderKey;
 | 
						|
            control.ButtonClear.Visible = true;
 | 
						|
            control.Height = control.PreferredHeight;
 | 
						|
            control.Text = "";
 | 
						|
            control.Style = eDotNetBarStyle.StyleManagerControlled;
 | 
						|
        }
 | 
						|
 | 
						|
        public override SelectionRules SelectionRules
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                return (base.SelectionRules & ~(SelectionRules.BottomSizeable | SelectionRules.TopSizeable));
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        protected override void PreFilterProperties(IDictionary properties)
 | 
						|
        {
 | 
						|
            base.PreFilterProperties(properties);
 | 
						|
            string[] strArray = new string[] { "Text", "PasswordChar" };
 | 
						|
            Attribute[] attributes = new Attribute[0];
 | 
						|
            for (int i = 0; i < strArray.Length; i++)
 | 
						|
            {
 | 
						|
                PropertyDescriptor oldPropertyDescriptor = (PropertyDescriptor)properties[strArray[i]];
 | 
						|
                if (oldPropertyDescriptor != null)
 | 
						|
                {
 | 
						|
                    properties[strArray[i]] = TypeDescriptor.CreateProperty(typeof(MaskedTextBoxAdvDesigner), oldPropertyDescriptor, attributes);
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        public char PasswordChar
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                MaskedTextBoxAdv control = this.Control as MaskedTextBoxAdv;
 | 
						|
                if (control.UseSystemPasswordChar)
 | 
						|
                {
 | 
						|
                    control.UseSystemPasswordChar = false;
 | 
						|
                    char passwordChar = control.PasswordChar;
 | 
						|
                    control.UseSystemPasswordChar = true;
 | 
						|
                    return passwordChar;
 | 
						|
                }
 | 
						|
                return control.PasswordChar;
 | 
						|
            }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                MaskedTextBoxAdv control = this.Control as MaskedTextBoxAdv;
 | 
						|
                control.PasswordChar = value;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        public string Text
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                MaskedTextBoxAdv control = this.Control as MaskedTextBoxAdv;
 | 
						|
                if (string.IsNullOrEmpty(control.Mask))
 | 
						|
                {
 | 
						|
                    return control.Text;
 | 
						|
                }
 | 
						|
                return control.MaskedTextProvider.ToString(false, false);
 | 
						|
            }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                MaskedTextBoxAdv control = this.Control as MaskedTextBoxAdv;
 | 
						|
                if (string.IsNullOrEmpty(control.Mask))
 | 
						|
                {
 | 
						|
                    control.Text = value;
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    bool resetOnSpace = control.ResetOnSpace;
 | 
						|
                    bool resetOnPrompt = control.ResetOnPrompt;
 | 
						|
                    bool skipLiterals = control.SkipLiterals;
 | 
						|
                    control.ResetOnSpace = true;
 | 
						|
                    control.ResetOnPrompt = true;
 | 
						|
                    control.SkipLiterals = true;
 | 
						|
                    control.Text = value;
 | 
						|
                    control.ResetOnSpace = resetOnSpace;
 | 
						|
                    control.ResetOnPrompt = resetOnPrompt;
 | 
						|
                    control.SkipLiterals = skipLiterals;
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        private DesignerActionListCollection _Actions = null;
 | 
						|
        public override DesignerActionListCollection ActionLists
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                if (this._Actions == null)
 | 
						|
                {
 | 
						|
                    this._Actions = new DesignerActionListCollection();
 | 
						|
                    this._Actions.Add(new MaskedTextBoxAdvDesignerActionList(this));
 | 
						|
                }
 | 
						|
                return this._Actions;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        public override DesignerVerbCollection Verbs
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                if (this._Verbs == null)
 | 
						|
                {
 | 
						|
                    this._Verbs = new DesignerVerbCollection();
 | 
						|
                    this._Verbs.Add(new DesignerVerb("Set Mask...", new EventHandler(this.OnVerbSetMask)));
 | 
						|
                }
 | 
						|
                return this._Verbs;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        private DesignerVerbCollection _Verbs = null;
 | 
						|
        private void OnVerbSetMask(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            new MaskedTextBoxAdvDesignerActionList(this).SetMask();
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public class MaskedTextBoxAdvDesignerActionList : DesignerActionList
 | 
						|
    {
 | 
						|
        // Fields
 | 
						|
        private ITypeDiscoveryService discoverySvc;
 | 
						|
        private IHelpService helpService;
 | 
						|
        private MaskedTextBoxAdv maskedTextBox;
 | 
						|
        private IUIService uiSvc;
 | 
						|
 | 
						|
        // Methods
 | 
						|
        public MaskedTextBoxAdvDesignerActionList(MaskedTextBoxAdvDesigner designer)
 | 
						|
            : base(designer.Component)
 | 
						|
        {
 | 
						|
            this.maskedTextBox = (MaskedTextBoxAdv)designer.Component;
 | 
						|
            this.discoverySvc = base.GetService(typeof(ITypeDiscoveryService)) as ITypeDiscoveryService;
 | 
						|
            this.uiSvc = base.GetService(typeof(IUIService)) as IUIService;
 | 
						|
            this.helpService = base.GetService(typeof(IHelpService)) as IHelpService;
 | 
						|
            if (this.discoverySvc != null)
 | 
						|
            {
 | 
						|
                IUIService uiSvc = this.uiSvc;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        public override DesignerActionItemCollection GetSortedActionItems()
 | 
						|
        {
 | 
						|
            DesignerActionItemCollection items = new DesignerActionItemCollection();
 | 
						|
            items.Add(new DesignerActionMethodItem(this, "SetMask", "Set Mask..."));
 | 
						|
            return items;
 | 
						|
        }
 | 
						|
 | 
						|
        public void SetMask()
 | 
						|
        {
 | 
						|
            string str = MaskAdvPropertyEditor.EditMask(this.discoverySvc, this.uiSvc, this.maskedTextBox, this.helpService);
 | 
						|
            if (str != null)
 | 
						|
            {
 | 
						|
                PropertyDescriptor descriptor = TypeDescriptor.GetProperties(this.maskedTextBox)["Mask"];
 | 
						|
                if (descriptor != null)
 | 
						|
                {
 | 
						|
                    descriptor.SetValue(this.maskedTextBox, str);
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public class MaskAdvPropertyEditor : UITypeEditor
 | 
						|
    {
 | 
						|
        // Methods
 | 
						|
        internal static string EditMask(ITypeDiscoveryService discoverySvc, IUIService uiSvc, MaskedTextBoxAdv instance, IHelpService helpService)
 | 
						|
        {
 | 
						|
            string mask = null;
 | 
						|
            Type formType = Type.GetType("System.Windows.Forms.Design.MaskDesignerDialog, System.Design, Version= 2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
 | 
						|
            ConstructorInfo ci = formType.GetConstructor(new Type[] { typeof(MaskedTextBox), typeof(IHelpService) });
 | 
						|
            Form form = ci.Invoke(new object[]{instance.MaskedTextBox, helpService}) as Form;
 | 
						|
            
 | 
						|
            try
 | 
						|
            {
 | 
						|
                MethodInfo mi = formType.GetMethod("DiscoverMaskDescriptors");
 | 
						|
                mi.Invoke(form, new object[]{discoverySvc});
 | 
						|
                //form.DiscoverMaskDescriptors(discoverySvc);
 | 
						|
                DialogResult result = (uiSvc != null) ? uiSvc.ShowDialog(form) : form.ShowDialog();
 | 
						|
                if (result == DialogResult.OK)
 | 
						|
                {
 | 
						|
                    PropertyInfo pi = formType.GetProperty("Mask");
 | 
						|
                    mask = (string)pi.GetValue(form, null);
 | 
						|
                    pi = formType.GetProperty("ValidatingType");
 | 
						|
                    Type validatingType = pi.GetValue(form, null) as Type;
 | 
						|
                    //mask = form.Mask;
 | 
						|
                    if (validatingType == instance.ValidatingType)
 | 
						|
                    {
 | 
						|
                        return mask;
 | 
						|
                    }
 | 
						|
                    instance.ValidatingType = validatingType;
 | 
						|
                }
 | 
						|
            }
 | 
						|
            finally
 | 
						|
            {
 | 
						|
                form.Dispose();
 | 
						|
            }
 | 
						|
            return mask;
 | 
						|
        }
 | 
						|
 | 
						|
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
 | 
						|
        {
 | 
						|
            if ((context != null) && (provider != null))
 | 
						|
            {
 | 
						|
                ITypeDiscoveryService discoverySvc = (ITypeDiscoveryService)provider.GetService(typeof(ITypeDiscoveryService));
 | 
						|
                IUIService service = (IUIService)provider.GetService(typeof(IUIService));
 | 
						|
                IHelpService helpService = (IHelpService)provider.GetService(typeof(IHelpService));
 | 
						|
                string str = EditMask(discoverySvc, service, context.Instance as MaskedTextBoxAdv, helpService);
 | 
						|
                if (str != null)
 | 
						|
                {
 | 
						|
                    return str;
 | 
						|
                }
 | 
						|
            }
 | 
						|
            return value;
 | 
						|
        }
 | 
						|
 | 
						|
        public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
 | 
						|
        {
 | 
						|
            return UITypeEditorEditStyle.Modal;
 | 
						|
        }
 | 
						|
 | 
						|
        public override bool GetPaintValueSupported(ITypeDescriptorContext context)
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
}
 | 
						|
#endif |