Я новичок в c #, поэтому я иду.
Это то, что я изначально думал, что происходит:
У меня есть метод (в php я назвал их функциями), который программно создает таблицу данных и DataGridView, связывает их, а затем добавляет DataGridView в качестве нового элемента управления на панель splitcontainer.
Дело в том, что если я использую кнопку для выполнения этого метода, он работает, но если я буду трактовать метод как функцию, не основанную на событиях, тогда элемент управления DataGridView не будет добавлен.
Изменение кода метода из этого
private void f_rebuild_jobs_datagrid(object sender, EventArgs e)
{
к этому
private void f_rebuild_jobs_datagrid()
{
предотвращает добавление элементов управления.
Это то, что, по-моему, действительно вызывает проблему:
Следует отметить, что я могу настроить оповещения MessageBox, и они срабатывают, даже когда мы используем лестницу, поэтому работа выполняется, но элемент управления DataGridView не добавит ... и другой тип элемента управления (кнопки, метки и т. Д.) ).
Какой-нибудь совет по моей ошибке?
Следует упомянуть, что когда я не использую кнопку, у меня есть метод в form2, запускающий основную функцию генерации представления данных в первой форме. По сути, у меня есть форма, которая открывается и предлагает пользователю изменить некоторую информацию, а затем после закрытия формы DataGridView должен обновить и отразить изменения.
То, как я вызываю функцию генерации DataGridView из form2:
this.Close();
form1 form1 = new form1();
form1.f_rebuild_jobs_datagrid();
Это было мое решение.
Хотя я до сих пор не уверен, почему функция не может добавить элементы управления, если они выполняются из отдельной формы, я нашел решение своей проблемы, используя .ShowDialog, а не .Show, чтобы открыть мой диалог. Это позволило мне выполнить функцию, естественно, после закрытия диалога. (Источник: http://bytes.com/topic/visual-basic-net/answers/379038-detecting-whether-form-has-been-closed-not)