2009-02-19 3 views
5

Ich möchte ein Steuerelement zu einem Benutzersteuerelement in einem Ereignishandler hinzufügen (wie einem Button-Klick-Ereignis).Steuerelement dynamisch zu Benutzersteuerelementen hinzufügen

Ich versuche, ein Datagridview-Lookup-Steuerelement dynamisch hinzufügen, aber ich konnte das nicht an der Arbeit, so habe ich versucht, das Hinzufügen nur einen Knopf mit diesem Code:

private void btnCreateNewButton_Click(object sender, EventArgs e) 
{ 
    Button btn = new Button(); 
    btn.Location = new Point(100, 640); 
    btn.Size = new Size(100, 30); 
    btn.Text = "Click Me"; 
    btn.Click += (s, ea) => MessageBox.Show("New button clicked"); 
    this.Controls.Add(btn); 
} 

Wenn ich meine Neu erstellen Schaltfläche, keine Schaltfläche wird angezeigt.

Wenn ich den exakt gleichen Code in ein Formular statt einer Benutzersteuerung einfüge, wird die Schaltfläche erstellt und wie beabsichtigt angezeigt, aber in einem Benutzersteuerelement passiert nichts. In der Benutzersteuerung Ich habe auch versucht

haben
this.Parent.Controls.Add(btn) and 
this.ParentForm.Controls.Add(btn) 

, aber ohne Erfolg.

Hat jemand irgendwelche Ideen?

Danke, Ciaran.

+0

Die erste Version (this.Controls.Add) funktioniert einfach gut ... Wenn das UserControl höher als 640 ist –

Antwort

1

Sie platzieren Ihren Knopf auf 100,640 Punkt. Bitte stellen Sie sicher, dass Ihre Benutzersteuerung Ihren dynamischen Button aufnehmen kann. Sonst wirst du es nicht sehen. Ich habe Ihren Code verwendet und es hat gut für mich funktioniert, stellen Sie einfach die richtige Größe des Elternformulars und Benutzerkontrolle.

+1

Danke dafür, es wurde aus irgendeinem Grund unter der Kontrolle angezeigt. Ich musste BringToFront() aufrufen –

1

Höchstwahrscheinlich ist es nur so, dass Ihre Schaltfläche außerhalb der Grenzen des übergeordneten Steuerelements und/oder hinter einem anderen Steuerelement platziert wird. Ich glaube nicht, dass UserControls oder Forms in Bezug auf das Hinzufügen von Steuerelementen zur Laufzeit speziell sind, aber ein einfacher Unterschied kann darin bestehen, dass Formulare standardmäßig skalierbar sind, UserControls dagegen nicht? Wie auch immer, ich denke nicht, dass sich der Control-Typ automatisch an alle untergeordneten Controls anpasst, so dass es recht einfach ist, ein neues/dynamisches Control an die falsche Stelle zu setzen und es nicht sichtbar zu machen.