C# Winforms проблемы визуального наследования с DataGridView

Отсюда я создал BaseFormзатем установите все свои BaseForm.Designer.csprivate члены к protected, Затем был визуально унаследован / получен Form,

Теперь я могу изменить размер или изменить все элементы управления в производной Form во время разработки, кроме DataGridView, Я нахожу DataGridView как заблокировано в производном Formдаже если он не заблокирован в BaseForm,

В чем может быть причина? Что я должен посмотреть / проверить снова?

У меня есть базовая форма, как это: альтернативный текст

И я получил такую ​​форму: альтернативный текст

3 ответа

Решение

Я предполагаю, что конструктор VS блокирует элементы управления, исходящие из базовых классов. Поскольку у вас одинаковый код инициализации, вы бы изменили свойства сетки внутри базового класса, что влияет на все остальные производные формы.

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

Это известная проблема..

https://connect.microsoft.com/VisualStudio/feedback/details/284335/designer-prevents-access-to-protected-datagridview-control-in-inherited-form

Вы можете создать пользовательский класс управления и наследовать от класса DataGridView

[Designer(typeof(System.Windows.Forms.Design.ControlDesigner))]
public class MyDataGridViewUserControl : DataGridView { }

Кажется, проблема с некоторыми элементами управления.NET. Здесь хорошо написано:

DataGridView заблокирован на унаследованном UserControl

Другие вопросы по тегам