В моей форме 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, на который не было нажата кнопка. Как изменить свойства этих элементов управления?
Спасибо.
Я настоятельно рекомендую прочитать это: http://www.codeproject.com/Tips/889332/Many-Questions-Answered-at-Once-Collaboration-betw –
Спасибо за ссылку. Я прочитаю его после того, как найду решение проблемы, которая у меня есть. – rbhat