Feedback

C# - Steuerelemente zur Laufzeit hinzufügen

Veröffentlicht von am 19.03.2013
(1 Bewertungen)
Ein recht simples Snippet.
Im Beispiel wird eine Datei geladen, aus der dann Buttons hinzugefügt werden.
Jede Zeile steht für einen Button. Eine Zeile ist so aufgebaut:
%text%|%breite%|%höhe%|%left(x)%|%top(y)%|%rot%;%grün%;%blau%

Die Farbe in RGB kann auch durch "[default]" ersetzt werden. Somit entsteht ein Button mit aktivierten visuellen Effekten (und damit der System-Farbe 'Control'.

Beispiel-Datei unter: https://www.dropbox.com/s/lhbodrae4djn5xu/Test-Form.txt

[Edit:] Man hinterfrage bitte nicht den tieferen Sinn Buttons aus Dateien zu laden: Ist halt einfach ein Beispiel ;)
GFU-Schulungen  [Anzeige]

C# Aufbaukurs

Sie haben grundlegende .NET- und C#-Kenntnisse und und wollen diese nun erweitern. Der Aufbaukurs C# führt Sie ein die Arbeit mit Interfaces und Delegates, Generics und Parallel Computing.

XML und .NET Überblick

Um auf dem neuesten Wissensstand zu sein, sollten Sie unser aktuelles ASP .NET Komplett Seminar belegen.
Nach dem Seminar kennen Sie die wichtigsten Strömungen in der Software-Technologie

private void Form1_Load(object sender, EventArgs e)
{
    OpenFileDialog selectFile = new OpenFileDialog();
    selectFile.Title = "Select File";
    selectFile.Filter = "Text Files|*.txt|All Files|*.*";
    selectFile.FileName = "*.txt";
    if (selectFile.ShowDialog() == DialogResult.OK)
        LoadContent(selectFile.FileName);
    else
        Close();
}

private void LoadContent(string FileName)
{
    try
    {
        Text = Path.GetFileNameWithoutExtension(FileName);
        foreach (string line in File.ReadAllLines(FileName))
        {
            string[] info = line.Split('|');
            Button b = new Button();
            b.Text = info[0];
            b.Width = Convert.ToInt32(info[1]);
            b.Height = Convert.ToInt32(info[2]);
            b.Left = Convert.ToInt32(info[3]);
            b.Top = Convert.ToInt32(info[4]);
            if (info[5] != "[default]")
            {
                b.UseVisualStyleBackColor = false;
                string[] rgb = info[5].Split(';');
                b.BackColor = Color.FromArgb(Convert.ToInt32(rgb[0]), Convert.ToInt32(rgb[1]), Convert.ToInt32(rgb[2]));
            }
            b.Click += new System.EventHandler(this.ShowTextAsMsg);
            Controls.Add(b);
        }
    }
    catch
    {
        MessageBox.Show("Information could not be read.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        Close();
    }
}

private void ShowTextAsMsg(object sender, EventArgs e)
{
    MessageBox.Show("You pressed '" + ((Button)sender).Text + "'!");
}
Abgelegt unter Hinzufügen, Laufzeit, Komponenten.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!