Изменение свойств DisplayMember и ValueMember комбинированного списка - PullRequest
0 голосов
/ 11 января 2019

Можно ли отбросить свойства ValueMember и DisplayMember и заставить комбинированный список использовать другие свойства вместо этого?

Я пытаюсь сказать следующее: добавить атрибут, чтобы он не отображался в сетке свойств.

[Browsable(false)]
public new ValueMember {get; set;}

[Browsable(false)]
public new DisplayMember {get; set;}

Затем объявите два новых свойства и заполните их требуемыми значениями ...

 public new MyValueMember {get; set;}   
 public new MyDisplayMember {get; set;}

... и заставить combobox использовать объявленные свойства для привязки.

Возможно ли это? Любая помощь очень ценится.

EDIT: Я использую Entity Framework и когда вы устанавливаете источник данных для bindingsource во время разработки, и вы устанавливаете MemberValue

выдает ошибку при попытке открыть форму, сообщая, что тип имени свойства не может быть найден в источнике данных поля привязки.

поэтому, чтобы предотвратить это, я подумал добавить свойство MyValuemember и MyDisplayMember и свойство MyDatamember, поэтому после установки источника данных в выпадающем списке я бы выбрал Datamember из свойства Mydatamember и, соответственно, я бы выбрал MyDisplayMember и MyValuemember из списка и установил MyDisplay & Valuemember на base.DisplayMember & base.Valuemember, но, к сожалению, я не могу этого сделать, потому что источник данных является родительским, и эти свойства недоступны ..

поэтому я нашел другое решение, которое сработало:

В случае, если кто-то еще наткнется на ту же проблему, я выберу следующее:

Я добавил новое имя свойства источника данных Base4Datasource и я добавил новое свойство DataMember с именем Base4Datamember

поэтому после того, как я установил Base4Datasource, я клонирую значение и задаю его, чем когда я заполняю Base4Datamember и задаю его, я снова устанавливаю источник данных с помощью значенияmember.

[Browsable(false)]
    public new object DataSource
    {
        get => base.DataSource;
        set => base.DataSource = value;
    }


    public object _base4DataSource = new BindingSource();

    [AttributeProvider(typeof(IListSource))]
    [DefaultValue(null)]
    [RefreshProperties(RefreshProperties.Repaint)]
    [Category("Base4Data")]
    [DisplayName("Base4 DataSource")]
    public object Base4DataSource
    {
        get => _base4DataSource;
        set
        {

            if (value != null)
            {
                var cloned = value.CustomMemberwiseClone();
                DataSource = cloned;
                _base4DataSource = cloned;
            }
            else
            {
                _base4DataSource = null;
                DataSource = null;

                Base4DataMember = string.Empty;
                BindingField = string.Empty;
            }


        }
    }

[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    public string _base4DataMember;

    [Category("Base4Data")]
    [DisplayName("Base4 Data Member")]
    [Description("Please Select a Datamember from the list")]
    [TypeConverter(typeof(ComboboxDataMemberConverter))]
    public virtual string Base4DataMember {
        get => _base4DataMember;
        set
        {
            _base4DataMember = value;

            if (value != null)
            {
                base.DataSource = new BindingSource(DataSource, value);
            }
            {
                ValueMember = string.Empty;
                DisplayMember = string.Empty;
                FillMethod = string.Empty;
            }


        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...