Перетаскивание пользовательского элемента управления не будет работать в .NET Windows Project - PullRequest
0 голосов
/ 22 июня 2011

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

"Указанное именованное соединение не найдено в конфигурации и не предназначено для использования с объектомпоставщик клиента или недействительный. "

Почему я получаю эту ошибку?

Но некоторые другие пользовательские элементы управления, которые я могу перетаскивать, находятся в том же проекте.Я не знаю, что я упустил при создании этого пользовательского элемента управления.

Ответы [ 3 ]

2 голосов
/ 23 июня 2011

Остерегайтесь того, что код в классе UserControl выполняется во время разработки.Конструктор, метод OnLoad и событие Load.Но также такие методы, как OnPaint ().Если этот код делает что-либо, зависящее от правильной настройки среды, этот код может вызвать исключение и заставить дизайнера передумать добавить элемент управления в форму.Это, безусловно, имеет место, когда вы получаете ошибку «not found in the configuration», файл конфигурации еще не существует.

Правильно используйте DesignMode, чтобы пропустить такой код.Как это:

    protected override void OnLoad(EventArgs e) {
        if (!this.DesignMode) {
            // Do stuff...
        }
        base.OnLoad(e);
    }
0 голосов
/ 08 ноября 2015

эта ошибка отображается, если вы поместили код загрузки данных из базы данных в конструктор userControl.

«загрузка данных или инициализация структуры объекта»

поэтому решение состоит в том, чтобы переместить код загрузки данных из конструктора в метод. Вы можете назвать это «loadData».

и вызовите этот метод «loadData» в конструкторе родительской формы

0 голосов
/ 23 июня 2011

Как говорит Ганс , вам может понадобиться использовать свойство DesignMode в конструкторе или OnLoad. Также убедитесь, что все открытые свойства, которые используют соединение, имеют этот атрибут:

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public string Foo
{
    get;
    set;
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...