Либо я делаю что-то неправильно, либо это ошибка.DataGridView генерирует столбец для свойства с возможностью просмотра false
У меня есть интерфейс IPerson
который имеет одно свойство, установленное на [Browsable(false)]
. После того как я создал новый UserControl
(UC), перетащил DataGridView
(DGV) в него и породил BindingSource
(BS) для интерфейса и назначил его на DGV это делает совершенно нормально и свойство делает а не. В конструкторе UC я создал образец Person
и назначил его как источник BS, так что у меня есть хотя бы ряд в DGV для просмотра.
Я создал Form
и перетащил на него новый созданный UC, чтобы увидеть, что свойство зла появляется в виде столбца.
ПОЧЕМУ?
Я пробовал несколько вещей, от перекомпиляции, до литья конкретного класса в интерфейс, но у меня все еще такая же проблема. В Форме Control неожиданно создает для него столбец, а сам элемент управления он делает a) не имеет его b) также не создает его.
// person interface
public interface IPerson : IEntity
{
string Surname { get; set; }
int Age { get; }
[DisplayName("Date of Birth")]
DateTime DateOfBirth { get; set; }
Gender Gender { get; set; }
Address Address { get; set; }
//THIS IS THE BAD BED :-P which should not show up
[DefaultValue(null), Browsable(false), ReadOnly(true)]
IBed Bed { get; set; }
}
// this is the UserCOntrol with a DGV in it, it displays it fine...
// and does not generate the column for the property
public partial class PersonControlView : UserControl
{
public PersonControlView()
{
InitializeComponent();
// just a temporary test ...
var l = new List<IPerson>
{
new Person
{
Address =
new Address
{
City = "Cologne",
Country = "Germany",
County = "***",
Number = "**",
Postcode = "*****",
Street = "**** Strasse"
},
DateOfBirth = new DateTime(1886, 32, 13),
Gender = Gender.Male,
Name = "***",
Surname = "***"
}
};
set(l);
}
// just a temporary test method...
public void set(IList<IPerson> persons)
{
iPersonBindingSource.DataSource = persons;
}
Некоторые фотографии
Это вид на UserControl, он генерировал столбцы правильно, как показано на рисунке
Это управление после того как я перетащить его из панели инструментов на form ... население происходит в конструкторе (см. тестовый код выше). Поле не должно отображаться - правильно?