¿Es posible crear una matriz de controles? ¿Hay alguna manera de obtener el índice de un control si más de uno de los controles en la matriz comparten el mismo controlador de eventos?C# crear una matriz de controles
5
A
Respuesta
7
Esto es ciertamente posible hacer. Compartir el controlador de eventos es bastante fácil de hacer en este caso porque el Button
que generó el evento se envía como parte de los argumentos del evento. Será el valor sender
y puede ser fundido de nuevo a un Button
Aquí algunos ejemplos de código
class Form1 : Form {
private Button[] _buttons;
public Form1(int count) {
_buttons = new Button[count];
for (int i = 0; i < count; i++) {
var b = new Button();
b.Text = "Button" + i.ToString()
b.Click += new EventHandler(OnButtonClick);
_buttons[i] = b;
}
}
private void OnButtonClick(object sender, EventArgs e) {
var whichButton = (Button)sender;
...
}
}
+0
esta solución funciona para mí. es exactamente lo que estaba buscando. – Kevin
4
Basado en comentarios de Kevin:
foreach(Button b in MyForm.Controls.OfType<Button>())
{
b.Click += Button_Click;
}
void Button_Click(object sender, EventArgs e)
{
Button clickedButton = sender as Button;
}
Cuestiones relacionadas
- 1. Crear dinámicamente una matriz en C#
- 2. Una forma adecuada de crear una matriz en C++
- 3. Cómo crear una matriz de registro numpy de C
- 4. Crear una matriz de símbolos
- 5. ¿Cómo crear una matriz de clases en C++?
- 6. ¿Puedo crear una matriz de punteros Char en C?
- 7. ¿Cómo crear una matriz con secuencia de enteros en C#?
- 8. Controles Clon - C# (Winform)
- 9. Cómo crear una matriz dinámica de enteros
- 10. Cómo crear una matriz dinámica
- 11. ¿Puedo crear una matriz C estática con Cython?
- 12. C++: ¿Cómo crear una matriz usando boost :: property_tree?
- 13. Crear una matriz demasiado grande en C++, ¿cómo resolverlo?
- 14. crear un gran matriz en C++
- 15. C# - Crear matriz administrada desde el puntero
- 16. Crear lista de controles en Windows.Forms
- 17. convertir una matriz FileInfo en una matriz de cadenas C#
- 18. ¿Cómo crear controles en tiempo de ejecución?
- 19. crear dinámicamente controles y guardar los valores de los controles a través de la devolución de datos - ASP.Net C#
- 20. Comandos de matriz y división para crear una matriz bidimensional
- 21. C# listview - controles de incrustación
- 22. cómo crear una "matriz de selectores"
- 23. PHP - Crear una matriz de cadena
- 24. NullPointerException al crear una matriz de objetos
- 25. ¿Cómo crear una matriz de registro numpy?
- 26. Eficiencia: ¿Crear una matriz de dobles incrementalmente?
- 27. Java - Crear una matriz de métodos
- 28. Cómo Crear una matriz de DbParameter []
- 29. Crear una matriz de objetos en jQuery
- 30. Crear una matriz constante de cadenas
Por favor, definir los componentes. Tal vez una muestra de código ayudaría. –
por ejemplo: Quiero tener 30 botones en un formulario que comparten el mismo evento de clic – Kevin
El parámetro de remitente del evento click será el botón que generó el clic, por lo que obtener el índice sería 'Array.IndexOf (buttonArray, sender) ' – shf301