Esempio n. 1
0
        /// <summary>
        /// 属性窗属性值更改事件
        /// 当是否使用缺省文本属性改变时,保存是否使用缺省文本设置
        /// 当文本属性更改时,更新控件文本属性(因为不会自动更新)
        /// </summary>
        /// <param name="s"></param>
        /// <param name="e"></param>
        private void propertyGrid1_PropertyValueChanged(object s, System.Windows.Forms.PropertyValueChangedEventArgs e)
        {
            bool boolOld = false;
            bool boolNew = false;

            //是否使用缺省文本属性
            if (e.ChangedItem.Label == "IsUseDefaultText")
            {
                boolOld = (bool)e.OldValue;
                boolNew = (bool)e.ChangedItem.Value;
            }
            //展开文本属性
            else if (e.ChangedItem.Label == "ControlText")
            {
                ControlText OldText    = (ControlText)e.OldValue;
                ControlText NewText    = (ControlText)e.ChangedItem.Value;
                OwnControl  ownControl = (OwnControl)this.propertyGrid1.SelectedObject;
                ownControl.ControlText = NewText;
                boolOld = OldText.IsUseDefaultText;
                boolNew = NewText.IsUseDefaultText;
            }
            //文本属性
            else if (e.ChangedItem.Label == "Text")
            {
                OwnControl  ownControl = (OwnControl)this.propertyGrid1.SelectedObject;
                ControlText NewText    = new ControlText((string)e.ChangedItem.Value, ownControl.ControlText.IsUseDefaultText);
                ownControl.ControlText = NewText;
            }

            //保存到Xml文件
            if (boolOld != boolNew)
            {
                design.SaveIsUseDefaultTextSetting(this.cboControlList.Text, boolNew);
            }
        }
        public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
        {
            if (destinationType == typeof(System.String) && value is ControlText)
            {
                ControlText ct  = (ControlText)value;
                string      str = ct.Text + "," + ct.IsUseDefaultText.ToString();
                return(str);
            }

            return(base.ConvertTo(context, culture, value, destinationType));
        }
        public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
        {
            if (value is string)
            {
                try
                {
                    string str = (string)value;
                    int    i   = str.LastIndexOf(",");
                    if (i != -1)
                    {
                        ControlText ct = new ControlText();
                        ct.IsUseDefaultText = bool.Parse(str.Substring(i + 1).Trim());
                        ct.Text             = str.Substring(0, i);
                        return(ct);
                    }
                }
                catch
                {
                    throw new ArgumentException("无法将\"" + (string)value + "\"转换为ControlText类型");
                }
            }

            return(base.ConvertFrom(context, culture, value));
        }