У меня есть пользовательский элемент управления: это управляемый код, который подклассы System.Windows.Forms.Control.
Я хочу добавить такие элементы, как поля редактирования, списки выбора, поля со списком, переключатели и т. Д. В места на этом элементе управления. Простой способ сделать это - просто добавить экземпляры этих классов в коллекцию Controls, чтобы они стали дочерними элементами управления.
Добавление их в качестве дочерних элементов управления может создать некоторые тонкие проблемы, например:
IE 6 выбрать элементы управления (поле со списком) над меню
На моем элементе управления есть полосы прокрутки, которые, кажется, прокручивают содержимое элемента управления (содержимое больше, чем сам элемент управления); когда дочерний элемент управления находится рядом с краем экрана, тогда я бы хотел наполовину отобразить (т.е. обрезать) этот дочерний элемент (т. е. чтобы половина его находилась за пределами физического экрана), но настоящий дочерний элемент управления не может быть расположен за границей своего родителя.
Есть ли другие потенциальные проблемы?
Когда я использую IE7 для отображения http://www.tizag.com/htmlT/htmlselect.php (например), который содержит поля со списком и т. Д., И когда я затем использую Spy ++, чтобы шпионить за IE7, когда я делаю это, я вижу только одно окно Экземпляр / control без дочерних элементов (имя класса «Internet Explorer_Server»).
Я предполагаю, что это означает, что в IE7 функциональность для отображения комбинированного окна встроена в сам элемент управления IE7, и что IE7 не использует стандартные элементы управления в качестве дочерних элементов управления.
Вопросы:
- Лучше ли повторно использовать стандартные элементы управления в качестве дочерних элементов пользовательского элемента управления или переопределить функциональность стандартных элементов управления внутри самого пользовательского элемента управления?
- Есть ли у вас какие-либо предостережения (предупреждения), относящиеся к какому-либо сценарию?
- Если бы я хотел переопределить функциональность стандартных элементов управления в пользовательском элементе управления, знаете ли вы какой-либо существующий код (который реализует эту функцию), который я мог бы использовать повторно?
Если такой код уже существует, я не знаю, как его искать (мои поиски находят, например, поля со списком владельца и расширения стандартных полей со списком): возможно, мало кто переопределяет стандартные элементы управления с нуля
Редактировать
Я нашел полу-связанный вопрос: Как сделать элемент управления похожим на ComboBox с включенными визуальными стилями?