2014-10-15 2 views
0

Я пытаюсь просто получить форму для правильной загрузки. Это модельная дочерняя форма модального родителя (которая сама по себе является модельной дочерней формой основного пользовательского интерфейса). Мне нужно иметь возможность взаимодействовать со всеми формами несколько одновременно.Аккуратно загружайте WinForm каждый раз, когда он получает фокус или создается

Форма, которую я хочу перезагрузить, имеет очень мало доступа с помощью фиксированных элементов управления. В основном динамические элементы управления загружаются из чтения текстового файла (пользователей) и помещают флажки (1 на пользователя в текстовом файле в столбцах) в форме.

Первое, что мне нужно сделать, это просто написать форму точно каждый раз. Я открываю форму кнопкой, но сохраняю право собственности на родителя. Если родительский элемент закрывается, все дети должны закрыть (но не программу). Родитель этого ребенка - это ребенок). Пример:

private void bPermissions_Click(object sender, EventArgs e) 
    { 

     Permissions af3 = new Permissions(); 
     af3.Owner = this; 
     af3.Show(); 
    } 

Таким образом, я нажимаю кнопку «Разрешения» и форма открывается точно. Если я снова его выберу, форма открывается без флажков. Если я закрываю «Разрешения» и затем пытаюсь его снова открыть, он не загружается точно. Загрузка только фиксированных предметов. Я попытался .Refresh() родительскую форму и дочернюю форму в различных событиях (FormClosed, FormClosing, Load и т. Д.) Как в форме «Старт», так и в форме «Разрешения».

Как я могу точно обновить эту форму каждый раз, когда я пытаюсь ее открыть?

EDIT:

Я Newb и очень нравится делать это. Но я учусь. Пожалуйста, будьте добры и укажите мне направление. :-D Спасибо.

EDIT2: Не мода. Немодальные.

+1

Я думаю, что ваша проблема может быть в форме разрешений. Когда в этой форме вы создаете элементы управления? Вы создаете новую версию этой формы каждый раз, когда вы нажимаете кнопку ... так что дочерняя форма, вероятно, есть разница. – Jay

+1

Просто примечание: форма 'Modeless' открывается при вызове' frm.Show() 'и' Modal', когда 'frm.ShowDialog()' – Reniuz

+1

Я создаю элементы управления в Permissions_Load (отправитель объекта, EventArgs e) {WidgetLogic .getPermText (this);} \ * Если это ссылка на System.Windows.Forms.Form targetForm * \ в Permissions.cs путем подачи их из логического файла. , Hmmm ... Я попытался поставить refresh() в отправителе, когда Start теряет фокус в Leave. Может быть, refresh() должен находиться в Start.cs в другом месте? –

ответ

0

Хорошо. @D .. определенно повел меня по пути. Будучи новичком, я обещаю, что мне пришлось немного поцарапать голову.

я сделать звонок из OnLoad

private void Permissions_Load(object sender, EventArgs e) 
    { 

     WidgetLogic.getPermText(this); 
     WidgetLogic.getDetailerPermText(this); 
     WidgetLogic.getAdminPermText(this); 
    } 

я должен был сделать вызов с помощью кнопки до загрузки страницы и передавая ее обратно от логики к targetForm. Форма, в которой я хотел бы получить информацию (Разрешения af3)

private void bPermissions_Click(object sender, EventArgs e) 
    { 

     Permissions af3 = new Permissions(); 
     af3.Owner = this; 
     af3.Show(); 
     WidgetLogic.getPermText(af3); 
     WidgetLogic.getDetailerPermText(af3); 
     WidgetLogic.getAdminPermText(af3); 
    } 

Awesome Sauce !! :-D Спасибо!