In meinem Windows-Formular fülle ich flowLayoutPanel
mit Instanzen der Benutzersteuerung UCDetail
. Etwas wie folgt aus:Zugriff auf mehrere Benutzersteuerelemente von Child Form?
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 hat ein Click-Ereignis, so dass, wenn die UC geklickt wird, ChildForm
angezeigt wird. Ich gebe eine Referenz des angeklickten UCDetails, damit ich die Eigenschaften der Steuerelemente im UC steuern kann. Etwas wie folgt aus:
private void UCDetail_Click(object sender, EventArgs e)
{
var form = new ChildForm(this);
form.ShowDialog();
}
Und schließlich hat ChildForm
eine Schaltfläche mit einem Klickereignis, das LabelName.Text
im geklickt UCDetail
ändert. Etwas wie folgt aus:
UCDetail _cell;
public ChildForm(UCDetail Cell)
{
InitializeComponent();
_cell = Cell;
}
private void buttonChangeLabel_Click(object sender, EventArgs e)
{
_cell.labelEmp.Text = "John Smith";
}
Also lassen Sie uns sagen, dass ein Benutzer klickt auf RoomNum 202, die Instanz von UCDetail für diese Zeile auf ChildForm
gesendet, und als ich in ChildForm
auf die Schaltfläche klicken, wird ParentForm
Anzeigen John Smith für RoomNum 202
. Keine Probleme dort.
Das Problem ist, dass ChildForm
jetzt mehrere TextBoxen enthalten, so dass ich mehrere RoomNumbers eingeben kann, deren labelEmp
wird sich ändern.
Mit dem vorherigen Beispiel habe ich auf geklickt, die ChidForm
anzeigt. In den neuen Textfeldern gebe ich 203, 205 ein, weil ich diese Räume auch auf "John Smith" umstellen möchte.
In ChildForm
Ich habe nur Zugriff auf 202 (es wurde geklickt), aber nicht auf 203, 205 oder andere RoomNum, die nicht angeklickt wurde. Wie kann ich die Eigenschaften für diese Steuerelemente ändern?
Danke.
Ich würde dringend empfehlen, dies zu lesen: http://www.codeproject.com/Tips/889332/Many-Questions-Answered-at-Once-Collaboration-betw –
Danke für den Link. Ich werde es lesen, nachdem ich eine Lösung für das Problem gefunden habe, das ich habe. – rbhat