Autor Beitrag
erfahrener Neuling
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: Fr 08.04.16 10:52 
Hallo,

es wurde warscheinlich schon ziemlich oft gefragt, aber heute bin ich einfach zu verkatert, um die Sache selbst anzugehen. :eyes:

Könnte mir einer kurz und knapp erklären, wie ich ein Control (zB einen Button) so erstelle, dass ich ihn später mit nummeriertem Namen ansprechen kann (Controls.Button[i]...).

Das ganze soll 2 Programmen dienen:
1. dem Hauptprogramm, welches Control Daten aus einer Textdatei ließt und anhand dieser Daten zB Buttons anzeigt, anordnet und anklickbar macht.
2. einem Editor, mit dem man Felder individuell erstellen kann, anordnen usw und diese dann als Datenstruktur in besagte Textdatei schreibt

Also im Grunde geht es mir um die Erstellung und hinzufügen zu Controls und um die Abfrage zB in einem Click-Event.

Für Codebeispiele und Lösungs-/Denkansätze wäre ich sehr dankbar! Bitte nicht mit www.google.de o.Ä. antworten, dazu bin ich heute nicht fähig :nut:
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 08.04.16 11:26 
In seiner Frage ein 'ich bin heute zu faul macht das bitte für mich' unterzubringen ist für einen potentiellen Helfer extrem motivierend. Viel Glück beim lösen deines Problems.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4796
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 08.04.16 11:33 
Tipp: Lass dir per Designer den entsprechenden Code erzeugen und kopiere ihn einfach aus der .designer.cs-Datei heraus.
erfahrener Neuling Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: Fr 08.04.16 11:57 
@Th69
Zitat:
Tipp: Lass dir per Designer den entsprechenden Code erzeugen und kopiere ihn einfach aus der .designer.cs-Datei heraus.


Also wie der Code für das hinzuzufügende Control auszusehen hat, weiß ich schon (denke ich zumindest)
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
private void buttonCreateLabel_Click(object sender,EventArgs e)
{
  Label label = new Label();
  label.AutoSize = false;
  label.Size = new Size(140,40);
  label.BackColor = SystemColors.ActiveCaption;
  label.AutoEllipsis = true;
  label.Location = new Point(x,y);
  label.Name = "label" + amountOfLabels + 1;
  label.Click += new System.EventHandler(this.label_Click);
  this.Controls.Add(label);

  this.amountOfLabels++;
  this.x = this.x + 100;
}

private void label_Click(object sender, EventArgs e)
{
        //wie spreche ich zB label.Name = "label2" an?
}


Also das geht ja dann glaub ich mit Controls.??? oder geht das auch über sender?

@Ralf Jansen
Zitat:
In seiner Frage ein 'ich bin heute zu faul macht das bitte für mich' unterzubringen ist für einen potentiellen Helfer extrem motivierend. Viel Glück beim lösen deines Problems
Es ging mir ja nur darum, einen gewissen Ansatz zu finden (über google bin leider nicht fündig geworden). Ansonsten will ich's ja schon alleine Lösen und verstehen ;)

EDIT: in der Fragestellung habe ich zwar von Buttons gesprochen, aber eigentlich benutze ich labels, die als Button fungieren
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 08.04.16 12:01 
Wenn du bestimmte Controls auch noch direkt ansprechen willst packe sie nicht nur in die Controls Collection sondern zusätzlich in irgendeine Liste die du selbst verwaltest und damit besser unter Kontrolle hast.

Also wenn es z.B. nur um Labels geht dann zum Beispiel eine List<Label> oder wenn du die über Ihren Namen finden willst (denn du in auch Label.Name reinschreibst) kannst du ein Dictionary<string, Label> nehmen und als Key halt den Namen eintragen.


Edit: Oder wenn du die nur in Events brauchst
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
private void label_Click(object sender, EventArgs e)
{
   Label label = sender as Label;
   if (label != null)
   {
       // label.Name ....    
       // label.Text = ""; .... 
   }
}

Für diesen Beitrag haben gedankt: erfahrener Neuling
erfahrener Neuling Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: Fr 08.04.16 12:12 
Ja im Moment reicht das Event aus, genau das braucht ich :zustimm: