Benutzer mit den meisten Antworten
Property Index

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
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- Als Antwort vorgeschlagen Robert BreitenhoferModerator Dienstag, 19. Oktober 2010 09:25
- Als Antwort markiert Robert BreitenhoferModerator Freitag, 22. Oktober 2010 10:17
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 -
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.
-
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- Als Antwort vorgeschlagen Robert BreitenhoferModerator Dienstag, 19. Oktober 2010 09:25
- Als Antwort markiert Robert BreitenhoferModerator Freitag, 22. Oktober 2010 10:17