示例#1
0
        //-------------------------------------------------------------------------------
        #endregion
        //-------------------------------------------------------------------------------
        #region Methods
        //-------------------------------------------------------------------------------
        public override object EditValue(
            System.ComponentModel.ITypeDescriptorContext context,
            IServiceProvider provider,
            object value)
        {
            if ((context != null) && (context.Instance != null) && (provider != null))
            {
                service =
                    (System.Windows.Forms.Design.IWindowsFormsEditorService)provider.GetService(
                        typeof(System.Windows.Forms.Design.IWindowsFormsEditorService));

                if (service != null)
                {
                    if (context.Instance is IDataLinkLayer)
                    {
                        System.IO.Ports.SerialPort port = (System.IO.Ports.SerialPort)value;
                        SerialPortSettings         cntr =
                            new SerialPortSettings(port);
                        cntr.EditingIsComplete += new EditingIsCompleteEventHandler(cntr_EditingIsComplete);

                        if (port.IsOpen)
                        {
                            // Запрещаем редактирование
                            cntr.Enabled = false;
                        }

                        service.DropDownControl(cntr);
                        value = cntr.SerialPort;
                    }
                    else
                    {
                        throw new InvalidOperationException(
                                  "Объект для которого вызывается редактор не яввляется IDataLinkLayer");
                    }
                }
            }
            else
            {
                return(base.EditValue(context, provider, value));
            }
            return(value);
        }
示例#2
0
        //-------------------------------------------------------------------------------
        #endregion
        //-------------------------------------------------------------------------------
        #region Methods
        //-------------------------------------------------------------------------------
        public override object EditValue(
            System.ComponentModel.ITypeDescriptorContext context, 
            IServiceProvider provider, 
            object value)
        {
            if ((context != null) && (context.Instance != null) && (provider != null))
            {
                service =
                    (System.Windows.Forms.Design.IWindowsFormsEditorService)provider.GetService(
                    typeof(System.Windows.Forms.Design.IWindowsFormsEditorService));

                if (service != null)
                {
                    if (context.Instance is IDataLinkLayer)
                    {
                        System.IO.Ports.SerialPort port = (System.IO.Ports.SerialPort)value; 
                        SerialPortSettings cntr =
                            new SerialPortSettings(port);
                        cntr.EditingIsComplete += new EditingIsCompleteEventHandler(cntr_EditingIsComplete);

                        if (port.IsOpen)
                        {
                            // Запрещаем редактирование
                            cntr.Enabled = false;
                        }
                        
                        service.DropDownControl(cntr);
                        value = cntr.SerialPort;
                    }
                    else
                    {
                        throw new InvalidOperationException(
                            "Объект для которого вызывается редактор не яввляется IDataLinkLayer");
                    }
                }
            }
            else
            {
                return base.EditValue(context, provider, value);
            }
            return value;
        }