c# - tiempo - Agregar controles a los controles del usuario dinĂ¡micamente
crear controles dinamicamente c# winforms (2)
Quiero agregar un control a un control de usuario en un controlador de eventos (como un evento de clic de botón).
Intento agregar un control de búsqueda de datagridview dinámicamente, pero no pude hacer que funcione, así que intenté simplemente agregar un botón con este código:
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);
}
Cuando hago clic en mi botón Crear nuevo, no aparece ningún botón.
Si agrego exactamente el mismo código en un formulario en lugar de un control de usuario, el botón se crea y se muestra como se esperaba, pero en el control del usuario no sucede nada. En el control del usuario, también he intentado
this.Parent.Controls.Add(btn) and
this.ParentForm.Controls.Add(btn)
pero fue en vano.
¿Alguien tiene alguna idea?
Gracias, Ciaran.
Lo más probable es que su botón se encuentre fuera de los límites del control principal y / o detrás de otro control. No creo que los UserControls o Forms sean especiales con respecto a la adición de controles en tiempo de ejecución, pero una diferencia simple puede ser que los formularios son por defecto redimensionables mientras que los UserControls no lo son. De cualquier manera, no creo que ninguno de los tipos de control cambie el tamaño automáticamente para que quepan todos sus controles secundarios, por lo que es bastante fácil colocar un control nuevo / dinámico en el lugar incorrecto y no ser visible.
Usted coloca su botón en 100,640 puntos. Asegúrese de que su control de usuario pueda acomodar su botón dinámico. De lo contrario, no lo verás. Usé tu código y funcionó bien para mí, solo asegúrate del tamaño adecuado de la forma parental y el control del usuario.