#if FRAMEWORK20 using System; using System.Collections.Generic; using System.Text; using DevComponents.AdvTree; using System.Drawing; using System.ComponentModel; namespace DevComponents.DotNetBar { /// /// Represents the option list property node for AdvPropertyGrid. /// public class PropertyOptionListNode : PropertyNode { #region Internal Implementation /// /// Initializes a new instance of the PropertyNode class. /// /// public PropertyOptionListNode(PropertyDescriptor property) : base(property) { } internal override void OnLoaded() { base.OnLoaded(); Cell cell = this.EditCell; ItemContainer container = new ItemContainer(); container.LayoutOrientation = eOrientation.Vertical; string[] optionsList = GetPopupListContent(); foreach (string optionText in optionsList) { CheckBoxItem item = new CheckBoxItem(); item.CheckBoxStyle = eCheckBoxStyle.RadioButton; item.Text = optionText; item.TextColor = Color.Black; item.VerticalPadding = 0; item.CheckSignSize = new Size(11, 11); item.CheckedChanging += ItemCheckedChanging; container.SubItems.Add(item); } container.Style = eDotNetBarStyle.Office2007; cell.HostedItem = container; } protected override void Dispose(bool disposing) { BaseItem container = this.EditCell.HostedItem; if (container != null) { this.EditCell.HostedItem = null; foreach (BaseItem item in container.SubItems) { CheckBoxItem checkItem = item as CheckBoxItem; if (checkItem != null) checkItem.CheckedChanging -= ItemCheckedChanging; } container.Dispose(); } base.Dispose(disposing); } void ItemCheckedChanging(object sender, CheckBoxChangeEventArgs e) { if (e.EventSource != eEventSource.Code) { Exception valueException = null; object value = GetValueFromString(((CheckBoxItem)sender).Text, out valueException); e.Cancel = !ApplyValue(value, valueException); } } protected override void UpdateDisplayedValue(object propertyValue, bool refreshSubProperties) { base.UpdateDisplayedValue(propertyValue, refreshSubProperties); string text = GetPropertyTextValue(propertyValue); Cell cell = this.EditCell; if (cell.HostedItem == null) return; foreach (BaseItem item in cell.HostedItem.SubItems) { CheckBoxItem checkItem = item as CheckBoxItem; if (checkItem != null) checkItem.Checked = checkItem.Text.Equals(text); } } public override void EnterEditorMode(eTreeAction action, bool focusEditor) { } #endregion } } #endif