[VC# 2005] Steuerelementearray erstellen

meilon

Erfahrenes Mitglied
Hallo!
Ich benötige für die "Einfachheit" der Programmierung ein Steuerelementefeld. Zumindestens hieß das so in VB6: Mehrere Steuerelemente konnten den selben Namen haben. Der Zugriff erfolgte dann mit einem Index. In VB6 dann z.B. mit txtTextBox(2).Text = "FooBar"

Erstellen konnte man dies einfach durch ändern des Name-Attributes in den selben, den es schon einmal gab.


In VC# 2005 sagt er mir nur, dass es schon ein solches Element gäbe, bietet mir aber nicht an, die Felder zu einem Array zusammen zu fassen. Geht das? Wenn ja, wie?

Hoffe, es ist verständlich :D

-meilon
 
Hi.

Nur durchs umbenennen erzeugt dir VS kein Array aus den gleichbenannten Elementen.
Das Array musst du dir selbst im Quelltext zusammenstellen...

lg, Alex
 
Hättest du mal ein wenig anleitung für mich? Das habe ich jetzt mal Spaßeshalber in Form1.Designer.cs versucht
C#:
namespace test
{
    partial class Form1
    {
        /// <summary>
        /// Erforderliche Designervariable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Verwendete Ressourcen bereinigen.
        /// </summary>
        /// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Vom Windows Form-Designer generierter Code

        /// <summary>
        /// Erforderliche Methode für die Designerunterstützung.
        /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
        /// </summary>
        private void InitializeComponent()
        {
            this.textBox = new System.Windows.Forms.TextBox();
            this.textBox[1] = new System.Windows.Forms.TextBox();
            this.textBox[2] = new System.Windows.Forms.TextBox();
            this.SuspendLayout();
            // 
            // textBox1
            // 
            this.textBox[1].Location = new System.Drawing.Point(31, 24);
            this.textBox[1].Name = "textBox";
            this.textBox[1].Size = new System.Drawing.Size(117, 20);
            this.textBox[1].TabIndex = 0;
            // 
            // textBox2
            // 
            this.textBox[2].Location = new System.Drawing.Point(31, 58);
            this.textBox[2].Name = "textBox";
            this.textBox[2].Size = new System.Drawing.Size(116, 20);
            this.textBox[2].TabIndex = 1;
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(292, 271);
            this.Controls.Add(this.textBox[1]);
            this.Controls.Add(this.textBox[2]);
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion

        private System.Windows.Forms.TextBox textBox;
    }
}
Was habe ich falsch gemacht? Was wären die Schritte, um eine bereits vorhandene Form umzuwandeln?

mfg
-meilon
 
Die Designer.cs Datei würde ich in Ruhe lassen. Nicht das dir VisualStudio deine veränderungen verwirft..

Füge einfach deine Controls ganz normal aufs Form (mit einem eigenen Namen!), und füg sie dann in Array.

C#:
TextBox[] myTextboxes;

public Form1()
{
  InitializeComponent();
  
  myTextboxes = new TextBox[3];
  myTextboxes[0] = textBox1;
  myTextboxes[1] = textBox2;
  myTextboxes[2] = textBox3;
}

So in etwa.

Beim Erstellen des Arrays musst halt drauf achten, dass die Arraygröße mit der Anzahl der Textboxen die du hinzufügen willst übereinstimmt.
 

Neue Beiträge

Zurück