none
Property Index RRS feed

  • Frage

  • Hallo,

     

    in früheren Versionen von VS gab esfür die Controls das Property Index. In VS2010 scheint es wohl entfernt worden zu sein. Gibt es dafür Ersatz (UID?) ? oder eine andere Möglichkeit eine solche Funktionalität zu erhalten? (in VB.Net oder C#)?

     

    Grüße

    Donnerstag, 14. Oktober 2010 10:05

Antworten

  • Hallo,

    es soll dynamisch(also zur Laufzeit eines Programmes) per Button-Klick eine Form erstellt werden; auf dieser wieder rum Pictureboxen deren Anzahl im Laufe der Zeit (gemeint ist jetzt nicht Laufzeit des Programmes sondern das vielleicht in einem Monat ein paar Pictureboxen hinzugefügt und evtl in 2 Monaten wieder welche weggenommen werden) variieren kann. Diese Pictureboxen sollen ähnlich wie in einer Tabelle in Spalten und Reihen angeordnet werden, wobei nicht jede Zeile die selbe Anzahl an Pictureboxen enthalten muss; Spaltenanzahl wird eventuell auch mal verändert. Dabei muß ein und die selbe Picturebox immer die selbe Position beibehalten bzw. einen vordefinierten Wert enthalten (aus einer xml-Datei) bzw. ihren Wert und ggf. Position (welches durch eine andere Anwendung gesteuert werden würde) ändern.

    Wenn Du Dir mal die Form.Designer.vb/.cs anschaust, die Visual Studio erzeugt (vorher ggf. ausgeblendete Dateien im Projektmappenexplorer anzeigen), dann bekommst Du einen Eindruck, wie man Steuerelemente zur Laufzeit erzeugen und anordnen kann. Zur Anordnung in Spalten und Reihen bietet sich das TableLayoutPanel an.

    Das Erzeugen von Formular und Steuerelementen zur Laufzeit mal als vereinfachtes Beispiel:
    namespace WindowsFormsApplication1
    {
     public partial class Form1 : Form
     {
      public Form1()
      {
       InitializeComponent();
      }
    
      private void Button1_Click(object sender, EventArgs e)
      {
       Form f = new Form();
    
       f.Text = "New Form";
       f.Name = "NewForm";
       f.Size = new Size(400, 400);
       f.StartPosition = FormStartPosition.CenterScreen;
    
       Button b = new Button();
       b.Name = "Button1";
       b.Size = new Size(75, 22);
       b.Location = new Point(10, 10);
       b.Text = "Hallo Welt";
       b.Click += new EventHandler(NewFormControl_Click);
    
       f.Controls.Add(b);
       f.Show();
      }
    
      private void NewFormControl_Click(object sender, EventArgs e)
      {
       MessageBox.Show(((Control)sender).Text + " clicked!");
      }
     }
    }
    

    Für das genannte TableLayoutPanel findest Du hier ein Beispiel zur Anwendung:

    Wie funktioniert das TableLayoutPanel Control?
    http://www.microsoft.com/germany/msdn/solve/knowhow/howto/cliententwicklung/WieOrdneIchControlsAutomatischInEinerTabelleAn.mspx

    Da Du schreibst, dass die Formulare später aus XML Dateien erzeugt werden sollen, könnte auch folgendes Beispiel hilfreich sein:
    <title>Dynamisches Erzeugen von Controls per Reflection und XML</title> <link rel="stylesheet" type="text/css" href="FDStyles.css"> <link rel="stylesheet" type="text/css" href="CSharp.css">
    Dynamisches Erzeugen von Controls per Reflection und XML

    http://dzaebel.net/DynamicCreate.htm


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    Donnerstag, 14. Oktober 2010 11:21

Alle Antworten

  • Hallo,

    in früheren Versionen von VS gab esfür die Controls das Property Index.

    Meinst Du die Möglichkeit Control-Arrays zu erstellen in VB6?

    In VS2010 scheint es wohl entfernt worden zu sein.

    Wenn o.g., dann nicht erst in VS 2010.

    Gibt es dafür Ersatz (UID?) ? oder eine andere Möglichkeit eine solche Funktionalität zu erhalten? (in VB.Net oder C#)?

    Unter der Voraussetzung, dass meine o.g. Annahme zutrifft, gibt es mehrere Möglichkeiten. Gruppierung über Panels/GroupBoxes, eigene Auflistungen, gemeinsame Eventhandler. Worauf kommt es Dir denn an?


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    Donnerstag, 14. Oktober 2010 10:18
  • Hallo Thomas,

    es soll dynamisch(also zur Laufzeit eines Programmes) per Button-Klick eine Form erstellt werden; auf dieser wieder rum Pictureboxen deren Anzahl im Laufe der Zeit (gemeint ist jetzt nicht Laufzeit des Programmes sondern das vielleicht in einem Monat ein paar Pictureboxen hinzugefügt und evtl in 2 Monaten wieder welche weggenommen werden) variieren kann. Diese Pictureboxen sollen ähnlich wie in einer Tabelle in Spalten und Reihen angeordnet werden, wobei nicht jede Zeile die selbe Anzahl an Pictureboxen enthalten muss; Spaltenanzahl wird eventuell auch mal verändert. Dabei muß ein und die selbe Picturebox immer die selbe Position beibehalten bzw. einen vordefinierten Wert enthalten (aus einer xml-Datei) bzw. ihren Wert und ggf. Position (welches durch eine andere Anwendung gesteuert werden würde) ändern.

    Donnerstag, 14. Oktober 2010 10:33
  • Hallo,

    es soll dynamisch(also zur Laufzeit eines Programmes) per Button-Klick eine Form erstellt werden; auf dieser wieder rum Pictureboxen deren Anzahl im Laufe der Zeit (gemeint ist jetzt nicht Laufzeit des Programmes sondern das vielleicht in einem Monat ein paar Pictureboxen hinzugefügt und evtl in 2 Monaten wieder welche weggenommen werden) variieren kann. Diese Pictureboxen sollen ähnlich wie in einer Tabelle in Spalten und Reihen angeordnet werden, wobei nicht jede Zeile die selbe Anzahl an Pictureboxen enthalten muss; Spaltenanzahl wird eventuell auch mal verändert. Dabei muß ein und die selbe Picturebox immer die selbe Position beibehalten bzw. einen vordefinierten Wert enthalten (aus einer xml-Datei) bzw. ihren Wert und ggf. Position (welches durch eine andere Anwendung gesteuert werden würde) ändern.

    Wenn Du Dir mal die Form.Designer.vb/.cs anschaust, die Visual Studio erzeugt (vorher ggf. ausgeblendete Dateien im Projektmappenexplorer anzeigen), dann bekommst Du einen Eindruck, wie man Steuerelemente zur Laufzeit erzeugen und anordnen kann. Zur Anordnung in Spalten und Reihen bietet sich das TableLayoutPanel an.

    Das Erzeugen von Formular und Steuerelementen zur Laufzeit mal als vereinfachtes Beispiel:
    namespace WindowsFormsApplication1
    {
     public partial class Form1 : Form
     {
      public Form1()
      {
       InitializeComponent();
      }
    
      private void Button1_Click(object sender, EventArgs e)
      {
       Form f = new Form();
    
       f.Text = "New Form";
       f.Name = "NewForm";
       f.Size = new Size(400, 400);
       f.StartPosition = FormStartPosition.CenterScreen;
    
       Button b = new Button();
       b.Name = "Button1";
       b.Size = new Size(75, 22);
       b.Location = new Point(10, 10);
       b.Text = "Hallo Welt";
       b.Click += new EventHandler(NewFormControl_Click);
    
       f.Controls.Add(b);
       f.Show();
      }
    
      private void NewFormControl_Click(object sender, EventArgs e)
      {
       MessageBox.Show(((Control)sender).Text + " clicked!");
      }
     }
    }
    

    Für das genannte TableLayoutPanel findest Du hier ein Beispiel zur Anwendung:

    Wie funktioniert das TableLayoutPanel Control?
    http://www.microsoft.com/germany/msdn/solve/knowhow/howto/cliententwicklung/WieOrdneIchControlsAutomatischInEinerTabelleAn.mspx

    Da Du schreibst, dass die Formulare später aus XML Dateien erzeugt werden sollen, könnte auch folgendes Beispiel hilfreich sein:
    <title>Dynamisches Erzeugen von Controls per Reflection und XML</title> <link rel="stylesheet" type="text/css" href="FDStyles.css"> <link rel="stylesheet" type="text/css" href="CSharp.css">
    Dynamisches Erzeugen von Controls per Reflection und XML

    http://dzaebel.net/DynamicCreate.htm


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    Donnerstag, 14. Oktober 2010 11:21