Можно ли отбросить свойства 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;
}
}
}