0

В моей форме Windows я заполняю flowLayoutPanel экземплярами пользовательского элемента управления UCDetail. Что-то вроде этого:Доступ к нескольким пользовательским элементам управления из детской формы?

public ParentForm() 
{ 
    InitializeComponent(); 
    dataGridView1.DataSourceChanged += dataGridView1_DataSourceChanged; 
    DT = GetAllRooms(); // DT is one column [RoomNum] w/ 5 rows (201-205) 
    dataGridView1.DataSource = DT; 

} 

private void dataGridView1_DataSourceChanged(object sender, EventArgs e) 
{ 
    DataTable dt = (DataTable)dataGridView1.DataSource; 
    flowLayoutPanel1.Controls.Clear(); 
    flowLayoutPanel1.SuspendLayout(); 
    foreach (DataRow row in dt.Rows) 
    { 
     UCDetail ucb = new UCDetail(row, this.dataGridView1); 
     flowLayoutPanel1.Controls.Add(ucb); 
    } 
    flowLayoutPanel1.ResumeLayout(); 
} 

UCDetail имеет Click событие, так что, когда UC нажата, отображается ChildForm. Я передаю ссылку щелкнутого UCDetail, чтобы я мог контролировать свойства элементов управления в UC. Что-то вроде этого:

private void UCDetail_Click(object sender, EventArgs e) 
{ 
    var form = new ChildForm(this); 
    form.ShowDialog(); 
} 

И, наконец, ChildForm имеет кнопку с кликнутой случае, если изменения LabelName.Text в щелкнул UCDetail. Что-то вроде этого:

UCDetail _cell; 
public ChildForm(UCDetail Cell) 
{ 
    InitializeComponent(); 
    _cell = Cell; 
} 

private void buttonChangeLabel_Click(object sender, EventArgs e) 
{ 
    _cell.labelEmp.Text = "John Smith"; 
} 

Так давайте предположим, что пользователь нажимает на RoomNum 202, экземпляр UCDetail для этой строки посылается ChildForm, и при нажатии на кнопку в ChildForm, ParentForm покажет Джон Smith для RoomNum 202. Нет проблем.

Проблема в том, что ChildForm теперь будет содержать несколько текстовых полей, чтобы я мог ввести несколько номеров номеров, чье labelEmp изменится.

Используя предыдущий пример, я нажал на , который отображает ChidForm. В новых текстовых окнах я наберу 203, 205, потому что я также хочу изменить эти комнаты на «Джон Смит».

В ChildForm У меня есть доступ к 202 (он был нажат), но не до 203, 205 или любого другого RoomNum, на который не было нажата кнопка. Как изменить свойства этих элементов управления?

Спасибо.

+0

Я настоятельно рекомендую прочитать это: http://www.codeproject.com/Tips/889332/Many-Questions-Answered-at-Once-Collaboration-betw –

+0

Спасибо за ссылку. Я прочитаю его после того, как найду решение проблемы, которая у меня есть. – rbhat

ответ

0

Я закончил тем, что прошел flowLayoutPanel1 как справка. Он работал хорошо.

Смежные вопросы