2016-04-08 2 views
0

Hier ist der Code. Hilfe wird sehr verpflichtet sein. Ich möchte, dass die Panels zu tabePage1 hinzugefügt werden, aber stattdessen dem Formular hinzugefügt werden.Wie füge ich diese Panels tabcontrol hinzu, anstatt sie dem Formular hinzuzufügen?

private void tabPage1_Click(object sender, EventArgs e) 
{ 
    int i, j; 
    for (i = 1; i <= 3; i++) 
    { 
     for (j = 1; j <= 4; j++) 
     { 
      Panel a = new Panel(); 
      a.Location = new Point(i * 200, j * 50); 
      a.Width = 180; 
      a.Height = 40; 
      a.Name = "Rom " + (((i * 4) - 3) + (j - 1)); 
      a.BackColor = Color.Yellow; 
      a.AllowDrop = true; 
      a.DragDrop += new System.Windows.Forms.DragEventHandler(this.panel1_DragDrop); 
      a.DragOver += new System.Windows.Forms.DragEventHandler(this.panel1_DragOver); 
      a.Visible = true; 
      Label l = new Label(); 
      l.Location = new Point(10, 10); 
      l.Width = 180; 
      l.Text = a.Name; 
      a.Controls.Add(l); 
      l.AllowDrop = true; 
      this.Controls.Add(a); 
+1

tabPage_Click ist wahrscheinlich das falsche Ereignis zu versuchen, und dies mit zu tun. – LarsTech

Antwort

1

Dieser Code:

this.Controls.Add(a); 

fügt die Steuerung an die Form, weil Ihre tabPage1_Click Methode in einer Unterklasse von Form ist (was this zum Form beziehen). So fügen Sie die Platten zu tabPage1, dies zu tun, statt:

tabPage1.Controls.Add(a); 

Übrigens wollen Sie wirklich fügen Sie alle Platten zu einem einzigen TabPage, oder haben Sie eine TabPage für jedes Panel erstellen? Wenn letzteres aussieht, wird der Code offensichtlich anders aussehen.

Edit: in Antwort auf Ihren Kommentar, können Sie wie oben auf einen anderen TabPage unter Bezugnahme auf die durch Name (zB tabPage2.Controls.Add(a);) oder, wenn Sie wollen eine Reihe von Platten jeder TabPage in Ihrem TabControl hinzufügen , könnten Sie so etwas tun:

foreach (TabPage tp in yourTabControl.TabPages) 
{ 
    // create panel... 
    tp.Controls.Add(a); 
    // ... 
} 
+0

danke! Ich möchte die gleichen Panels auch zur nächsten TabPage hinzufügen. Wenn Sie mich in die richtige Richtung weisen können, wäre das großartig. – Lisandro

+0

Ich hoffe, ich könnte dich ein letztes Mal stören. Ich habe eine Drag-and-Drop-Funktion. Ich ziehe Namen aus einer Listbox in die Panels innerhalb der Tabpages. Wie bekomme ich diese Namen immer noch in diesen Panels, wenn ich das Programm schließe und öffne? Ich verwende eine XML-Datei, um die Namen in der Listbox zu speichern. – Lisandro

Verwandte Themen