Member 14116411 Ответов: 1

Расширенное управление Winform не отображается в конструкторе


Я расширил поле со списком, чтобы переопределить событие OnSelectedIndexChanged. Управление работает по назначению. При открытии формы, на которую был помещен элемент управления, он отображается. После запуска приложения в режиме отладки и просмотра формы (которая была открыта при запуске отладки) элемент управления не отображается. Он все еще там, просто не виден. Если форма закрыта и снова открыта, то элемент управления становится видимым.

Вот пример моего расширенного поля со списком:
using System;
using System.ComponentModel;

namespace CustomControls
{
    public partial class ComboBoxSN : ComboBox
    {
        private bool _haltSelection = false;

        /// <summary>
        /// Set whether to run the selectedindex event for the control
        /// </summary>
        [Description("Set this to true to keep the selected index from firing"), Category("CustomControl"), DefaultValue(false), Browsable(true)]
        public bool HaltSelection
        {
            get { return _haltSelection; }
            set { _haltSelection = value; }
        }

        protected override void OnSelectedIndexChanged(EventArgs e)
        {
            if (!_haltSelection)
                base.OnSelectedIndexChanged(e);
        }
    }
}


Что я уже пробовал:

Я искал CodeProject без какого-либо успеха.
Что нужно для того, чтобы элемент управления всегда отображался в конструкторе?
Спасибо.

1 Ответов

Рейтинг:
2

raddevus

Это может быть немного сложно. Это действительно связано с Visual Studio, и, безусловно, существуют различия в различных версиях.
Я тоже боролся с этим в прошлом, и это может свести вас с ума.
Способ 1
В любом случае, самый простой способ, который, вероятно, сработает, - это
1 откройте свой целевой проект .
2 откройте форму, в которой вы хотите использовать элемент управления. (если вы не открываете форму, то элемент toolbox в Visual Studio обычно не отображается)
3 откройте Панель инструментов (место, где вы выбираете элементы управления, которые вы будете перетаскивать на форму).
4. Вы когда-нибудь замечали, что они сгруппированы в складные вкладки? ну, перейдите на вкладку с надписью общие...и перейдите под нее, щелкните правой кнопкой мыши, и появится меню, которое выглядит примерно так ... > https://i.stack.imgur.com/zwUqR.png[^]
5. вы хотите выбрать пункт меню [выбрать элементы...].
Когда вы выберете это, появится еще одно диалоговое окно.
Здесь вы сможете выбрать элемент управления, который вы хотите, чтобы Visual Studio, чтобы знать.
6. Нажмите кнопку Обзор и перейдите в папку, где находится библиотека dll, содержащая элемент управления, и выберите его.

Это добавит его в общий список и зарегистрирует его в VStudio и _probably_ решит проблему.

Способ 2
Если у вас есть UserControl, определенный в вашем проекте, у вас будет что-то вроде того, что есть у меня с TextArea.cs (мой-это специальное текстовое поле).
Если у вас есть это, то
1. Перейдите в раздел Обозреватель решений
2. Перейдите к своему файлу (мой TextArea.cs), перетащите его на вкладку Общие и поместите на вкладку Общие панели инструментов.
3. это создаст ссылку на элемент управления и зарегистрирует его, чтобы Visual Studio знала, как его визуализировать.

Один или оба из них могут потребовать перезапуска VSTudio.
Удачи.


Member 14116411

раддевус,
Проблема не в том, что элемент управления отображается в панели инструментов. Он отображается на форме при первом открытии формы. После запуска приложения в режиме отладки и выхода из отладки элемент управления не отображается на форме. (то есть если форма была открыта в конструкторе при запуске сеанса отладки).

raddevus

Я это понимал, но видел, как это происходит, когда элемент управления не был должным образом "зарегистрирован" в Visual Studio. У меня была эта проблема в прошлом, и добавление ее в набор инструментов решило ее для меня в конструкторе.
Процесс выполнения этого каким-то образом "регистрирует" элемент управления, и Visual Studio может визуализировать этот элемент управления. А вы пробовали? Вы перезапустили VSTudio? Разве это не сработало?

Member 14116411

раддевус,
Расширенный элемент управления отображается в панели инструментов. Я следовал вашим инструкциям для метода 1. Перед перезапуском VS есть два расширенных элемента управления в панели инструментов. После перезагрузки он показал только один. Проверил форму, и проблема сохраняется.
Попытка Метода 2. Элемент управления не будет отображаться на вкладке Общие панели инструментов. Перезапустил VS и проверил форму, проблема сохраняется.
Спасибо за вашу помощь.
Попробовал оба метода, и проблема сохраняется.