Ja, es ist kein Problem, ein Array von Schaltflächen oder einem Objekt zu erstellen. Sie können sie im Visual Studio Designer nicht sehen, aber sie funktionieren einwandfrei.
Vor langer Zeit habe ich ein 2-D-Array von Schaltflächen verwendet, um die Benutzeroberfläche für eine Taschenrechner-App zu erstellen. Ich hatte eine HP-15C für eine lange Zeit verwendet und es verpasst.
Das Array Ansatz funktionierte gut.
Button[] numberButtons=new Button[] { btn0, btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btnDecimalPt};
Button[] operationButtons=new Button[] { btnDiv, btnMult, btnSubtract, btnAdd };
foreach (var b in numberButtons)
b.Click += new System.EventHandler(this.Number_Click);
foreach (var b in operationButtons)
b.Click += new System.EventHandler(this.Operation_Click);
// etc
Button[][] allButtons=
{
new Button[] {btnSqrt, btnExp, btn10x, btnPow,btnMultInverse, btnCHS, null, null, null, null},
new Button[] {btnN, btnInterest, btnPMT, btnPV, btnFV, null, btn7, btn8, btn9, btnDiv},
new Button[] {btnLn, btnLog, btnSine, btnCosine, btnTangent, btnPi, btn4, btn5, btn6, btnMult},
new Button[] {btnRoll, btnSwap, btnCLRfin, btnCLX, btnCLR, btnEnter, btn1, btn2, btn3, btnSubtract},
new Button[] {btnInt, btnFrac, btnFix, btnStore, btnRecall, null, btn0, btnDecimalPt, btnNotUsed, btnAdd}
};
// programmatically set the location
int col,row;
for(row=0; row < allButtons.Length; row++)
{
Button[] ButtonCol= allButtons[row];
for (col=0; col < ButtonCol.Length; col++)
{
if (ButtonCol[col]!=null)
{
ButtonCol[col].TabIndex = col + (row * allButtons.Length) +1;
ButtonCol[col].Font = font1;
ButtonCol[col].BackColor = System.Drawing.SystemColors.ControlDark;
ButtonCol[col].Size=new System.Drawing.Size(stdButtonWidth, stdButtonHeight);
ButtonCol[col].Location=new Point(startX + (col * stdButtonWidth),
startY + (row * stdButtonHeight)) ;
}
}
}
Nicht ganz auf die Frage bezogen, sondern nur ein wenig vorausschauend, möchten Sie vielleicht einen Blick auf http: //www.devexpress werfen.com/Produkte/NET/Controls/WinForms/Scheduler /, um als Kalenderplaner zu verwenden, anstatt Ihre eigenen zu schreiben, erhalten Sie viel mehr davon für weniger Aufwand – RC1140
+1 stalkerh: Wir verwenden diese Kontrolle (und das ganze Unternehmen Suite), wo ich mit einigen tollen Ergebnissen arbeite. Ich kann es nicht genug empfehlen. –