public override void SetProperty(DesignerPropertyInfo property, object obj)
        {
            base.SetProperty(property, obj);

            DesignerFlexibleFloat flexFloatAtt = property.Attribute as DesignerFlexibleFloat;

            if (flexFloatAtt != null)
            {
                unitLabel.Text = flexFloatAtt.Units;
            }

            DesignerFlexibleInteger flexIntegerAtt = property.Attribute as DesignerFlexibleInteger;

            if (flexIntegerAtt != null)
            {
                unitLabel.Text = flexIntegerAtt.Units;
            }

            CanUseDefinition canUseDefinition = (CanUseDefinition)property.Property.GetValue(obj, null);

            if (AIType.Current != null)
            {
                Type type = canUseDefinition.PropertyType;

                foreach (Definition definition in AIType.Current.Definitions)
                {
                    PropertyInfo[] properties = definition.Object.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public);

                    foreach (PropertyInfo prop in properties)
                    {
                        if (!prop.CanRead || prop.PropertyType != type)
                        {
                            continue;
                        }

                        comboBox.Items.Add(definition.Name + '.' + prop.Name);
                    }
                }
            }

            if (canUseDefinition.DefinitionName != string.Empty && canUseDefinition.DefinitionMember != string.Empty)
            {
                string str = canUseDefinition.DefinitionName + '.' + canUseDefinition.DefinitionMember;
                if (!comboBox.Items.Contains(str))
                {
                    comboBox.Items.Insert(0, str);
                }

                comboBox.Text = str;
            }
        }
Beispiel #2
0
        private void comboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (!_valueWasAssigned)
            {
                return;
            }

            CanUseDefinition canUseDefinition = (CanUseDefinition)_property.Property.GetValue(_object, null);

            string[] str = comboBox.Text.Split('.');
            Debug.Check(str.Length == 2);

            canUseDefinition.DefinitionName   = str[0];
            canUseDefinition.DefinitionMember = str[1];

            OnValueChanged();
        }