Каково состояние игры с “Визуальным Наследованием”

8
задан travis 9 September 2008 в 14:19
поделиться

6 ответов

Я думал, что они более или менее отсортировали настольные проблемы разработчика в 2005. Вы судили обычных преступников?

  • Никакие абстрактные типы управления
  • Никакие аргументы конструктора в любой форме
  • Инициализация, перемещенная в Form_Load в противоположность Ctor
  • Никакие средства управления в том же проекте как usercontrol/form, что они вставляются
  • Закройтесь все документы-> Чистый-> Восстанавливают
  • Перезапуск VS

Я, казалось, думал, что, пока Вы сделали все вышеупомянутые, это работало..... главным образом.

6
ответ дан 5 December 2019 в 13:02
поделиться

Я видел некоторые проблемы в VS2005 с этим. Они происходили главным образом из-за проблем с конструкцией объектов форм в разработчике. Были проблемы с кодом, который пытался получить доступ к базе данных от конструкторов формы и т.д.

Можно отладить проблемы как это путем запуска второго экземпляра Visual Studio и загрузки первой инстанции в отладчике. При установке точек останова в коде, можно затем отладить то, что происходит в разработчиках прежде всего.

Другой проблемой, которую я могу помнить, были дженерики в классах формы

public class MyForm<MyObject> : Form

это не будет работать

2
ответ дан 5 December 2019 в 13:02
поделиться

Я учусь к (по общему признанию soon-to-be-obsoleted) MCAD, и часть элемента WinForms была Визуальным Inheritence.

У меня лично не было основных проблем с ним, однако, существуют соображения для принятия для учета.

Для меня основная проблема всегда имеет инициализацию.. Необходимо помнить, что разработчик может / не, инстанцируют форм таким же образом, это делает во время выполнения (точно так же, это не может сделать этого с сетью dev, который является, почему уход необходим с рендерингом пользовательского элемента управления).

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

Я лично не видел доказательства, чтобы предположить, что этого "избежали". AFAIK, его все еще хорошая практика для осуществления повторного использования кода, если это возможно. Визуальное наследование обеспечивает это.

Я могу предложить создать новый вопрос с фактическими проблемами, которые Вы имеете с примером кода? Мы можем затем посмотреть на него, чтобы видеть, можем ли мы получить его работа и объяснить почему :)

3
ответ дан 5 December 2019 в 13:02
поделиться

Я часто натыкаюсь на такие проблемы в Visual Studio. Во многих случаях конструктору форм MSVS не удается представить форму правильно. Назад в дни я работал с WinForms, который я должен был сделать весь вид странных приемов для включения некоторых сложных сценариев. Однако я думаю, что использование визуального наследования очень выгодно и не должно быть выброшено независимо от ошибок разработчика MSVS.

1
ответ дан 5 December 2019 в 13:02
поделиться

Я думаю, что нашел путь, как избежать этой проблемы.

Не сцепляйте Событие Form_Load в своей родительской форме, это повредит разработчика.

Также не убирайте пустого конструктора По умолчанию из Visual Studio в Родительской Форме. Если Вы хотите иметь Внедрение зависимости, создайте другого конструктора.

Как это:

public ProductDetail()
{
    InitializeComponent();
}

public ProductDetail(ISupplierController supplierController) : base()
{
    InitializeComponent();
    this.supplierController = supplierController;
}

Можно затем все еще сделать это от наследованной Формы:

public NewProduct(ISupplierController supplierController)
    : base(supplierController)
{
    InitializeComponent();
}

Это работало на меня до сих пор, и у меня были некоторые странные проблемы разработчика также.

аплодисменты, Daniel

1
ответ дан 5 December 2019 в 13:02
поделиться

Прочитайте это: http://cs.rthand.com/blogs/blog_with_righthand/archive/2005/11/10/186.aspx

afaik, есть все еще проблемы с визуальным наследством и объектами, которые полагаются На сборниках для элементов дизайна, как правило, контролирует сетку и т. Д. Я верю, что MS все еще удалил возможность изменения f.Ex. GRIDVIEW в наследственной форме / USERCONTROL и т. Д. Но другие элементы управления, такие как TextBox, Form, Usercontrol, панель и т. Д., должны работать, как ожидалось, должны работать.

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

0
ответ дан 5 December 2019 в 13:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: