Вопрос

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

Например, у меня есть элемент управления, который использует всплывающую форму, специфичную для этого элемента управления. На данный момент я делаю доступным всплывающую форму друга. Если бы я хотел сделать это в виде фреймворка, я бы сделал его приватным и вложил в класс управления. Однако, если я сделаю это, я больше не смогу использовать ide для разработки формы и получаю ошибки при попытке компиляции. Итак, у меня есть 2 вопроса:

(1) Microsoft что-то делает в последнюю минуту, чтобы вкладывать все в частную жизнь?

(2) Является ли их путь предпочтительным, или я должен придерживаться своих друзей-аксессоров?

Это было полезно?

Решение

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

<Ол>
  • Используйте конструктор, чтобы создать вложенную форму вне класса, как обычно.
  • Добавьте вторую пустую форму в качестве закрытой вложенной формы, как это делается в примерах CLR с тем же именем, что и форма, созданная на шаге 1.
  • Перенесите код из *. designer.vb или *. designer.cs для вашей первой формы в конструктор для вашей второй формы. В основном это будет просто большая копия / вставка.
  • Удалите форму из шага 1. Возможно, вы захотите сохранить, переместив ее в отдельный проект библиотеки классов, чтобы вы могли использовать ее, когда нужно внести изменения.
  • Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top