У меня есть многослойная форма, на левой панели есть дерево, а в правой панели - панель. Выбор дерева приводит к тому, что определенные пользовательские элементы управления загружаются на Panel. В этом случае, поскольку родительская форма всегда загружается, я не могу подключиться к событию Shown родительской формы.Как вызвать метод в UserControl после его отображения?
Большинство моих UC имеют несвязанный DataGridView на них, который необходимо заполнить при создании UC. Время от времени может быть установлено 50 000 строк из базы данных SQL Server.
До сих пор я заполнял сетки во время конструктора UC, но так как мы начали работать с 50 000 строк, все изменилось. Я обнаружил, что заполнение сетки 50 000 строк от конструктора занимает не менее 15 минут по какой-то сумасшедшей причине. Однако, если я жду, чтобы заполнить сетку, пока я не нажму кнопку или из события загрузки, это займет 15 секунд. Это тайна. Поэтому я пытаюсь переместить загрузку сетки в другое место.
Однако, когда я пытаюсь заполнить сетку из события Load, есть визуальные несоответствия. Что произойдет, вы видите, что появляется небольшая версия моего UC, для загрузки строк DGV требуется 15 секунд, а ТОЛЬКО UC расширяется, чтобы заполнить панель (для свойства UC Dock установлено значение Fill). Поэтому мне тоже не нравится этот вариант.
Событие Shown было бы идеальным местом для загрузки моей сетки, если бы оно существовало для UC. Кто-нибудь знает, как это сделать?
Лучше вопрос, почему она занимает 15 минут, чтобы загрузить в конструкторе, но 15 секунд в другом месте. – Justin
Наверное, потому что его логика численности населения выполняется на основе чего-то, что многократно менялось при построении формы, или он кэширует загрузку нескольких DGV при загрузке формы. – KeithS
Идеи приветствуются, почему это происходит. Я бы предпочел остаться с моим прежним подходом. Код состоит из вызова базы данных (данные не меняются) и заполнения одного DGV. Существует разница между вызовом из конструктора и вызовом с кнопки - конструктор вызывается изнутри потока BackgroundWorker. Может ли это быть причиной этого? –