0

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 ParentFormAnzeigen 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.

+0

Ich würde dringend empfehlen, dies zu lesen: http://www.codeproject.com/Tips/889332/Many-Questions-Answered-at-Once-Collaboration-betw –

+0

Danke für den Link. Ich werde es lesen, nachdem ich eine Lösung für das Problem gefunden habe, das ich habe. – rbhat

Antwort

0

Ich landete flowLayoutPanel1 als Referenz übergeben. Es hat gut funktioniert.

Verwandte Themen