//------------------------------------------------------------------------------- #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); }
//------------------------------------------------------------------------------- #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; }