J'apprends le C# et j'ai l'exercice pour créer une calculatrice avec Windows Forms. En ce moment j'ai juste ajouté 9 boutons pour les nombres et 4 boutons pour les opérations occasionnelles (+, -, *, /) et une étiquette pour écrire dans les nombres comme des chaînes. Actuellement, je fais ceci:WinForms Button Array
private void button1_Click(object sender, EventArgs e)
{
WriteInLabel(1);
}
private void button2_Click(object sender, EventArgs e)
{
WriteInLabel(2);
}
//etc.
//function to write the Text in label1
private void WriteInLabel(int i)
{
label1.Text += i.ToString();
}
Et se rappelant le principe DRY, cela ressemble à de mauvais genre code écrit pour moi. Existe-t-il un moyen d'écrire ceci mieux? J'ai pensé à quelque chose comme un tableau de boutons/liste. Donc, je pouvais faire quelque chose comme ceci:
for(int i = 0; i < btnArr.Length; i++)
{
//Is this the correct syntax for appending an eventListener?
btnArr[i]Click += (sender, args) => WriteInLabel(i);
}
Maintenant, le problème est, je voulais modifier le bouton-propriétés dans le Windows Forms-Designer-View. Puis-je obtenir la conception-vue des boutons créés par le code auto-écrit comme ça?
Button btn1 = new Button();
Ou est-il possible de créer automatiquement un tableau des boutons à partir de Form1? J'ai essayé (ne fonctionne pas):
List<Button> btnList = new List<Button>();
foreach(Button btn in Form1)
{
btnList.Add(btn);
}
En quoi cela n'a-t-il pas fonctionné? cela dépendrait un peu comment les boutons ont été faits, s'ils ont été ajoutés comme enfants au formulaire etc? – BugFinder
Eh bien, je viens de les ajouter en faisant glisser un Button-Form de la boîte à outils vers le Form1. Et je reçois la ligne rouge squiggly sous Form1 dans mon dernier extrait de code, en disant: Form1 est un type, qui n'est pas valide dans le contexte actuel. –