Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

03.11.2011, 09:09

Stackpanel

Hallo,

kann mir jemdand sagen ob es möglich ist mehrere Stackpanel in einer Schleife zu generieren und diesen einen bestimmten Inhalt vergeben (z.B. TextBox und dann Buttons)??

MCP

Alter Hase

Beiträge: 513

Wohnort: Paderborn

Beruf: Software-Entwickler

  • Private Nachricht senden

2

03.11.2011, 09:27

Ja, ist möglich. ;)

3

03.11.2011, 09:52

ich möchte das ganze in einer Schleife generieren lassen etwa so:

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 private void GenerateStackpanel(int k, int max)         {             
int cou = 0;             
for (int i = 0; i < 12 && cou < max; ++i)             { 
for (int j = 0; (j + k) < 32 && cou < max; ++j)                 {                     
StackPanel stckp = new StackPanel();                    
// stckp.Content = (cou + 1).ToString();                     
grd_btns.Children.Add(stckp);                     
Grid.SetRow(stckp, (i + 1));                     
Grid.SetColumn(stckp, j + k);                     
cou++;                 
}                 
k = 0;             
}
 }


aber in den Content möchte ich halt mehrere Buttons oder auch Textboxten (auch mit einer Schleife) einfügen. Ich weiss aber leider nicht wie :(

MCP

Alter Hase

Beiträge: 513

Wohnort: Paderborn

Beruf: Software-Entwickler

  • Private Nachricht senden

4

03.11.2011, 10:16

Meinst Du mit Content die "Children" des StackPanels?
Wenn ja, dann hast Du doch schon fast alles was Du brauchst. Einfach eine Schleife die Buttons erzeugt und dann stckp.Children.Add(btn); ausführen... Ich sehe das Problem nicht, oder hab ich Dich missverstanden?

5

03.11.2011, 10:23

ich hab auch schon eine Schleife für Buttons:

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 private void GenerateButtons(int k, int max)     
//{     
//    int cou = 0;     
//    for (int i = 0; i < 12 && cou < max; ++i)     
//    {     
//        for (int j = 0; (j + k) < 32 && cou < max; ++j)    
 //        {     
//            Button btn = new Button();     
//            btn.Content = cou + 1;     
//            grd_btns.Children.Add(btn);     
//            Grid.SetRow(btn, (i + 1));     
//            Grid.SetColumn(btn, j + k);     
//            cou++;    
 //        }     
//        k = 0;     
//    }


oder



C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 private void GenerateButtons(int k, int max)
{ 
Button[] btns = new Button[365];                        
for (int i = 0; i <= 12; ++i)           
{               
for (int j = 0; j < 31; ++j)                
{                   
Button btn = new Button();                  
btn.Content = (i * 31) + j + 1;                     
grd_btns.Children.Add(btn);                     
Grid.SetRow(btn, i);                    
Grid.SetColumn(btn, j);                 
} 
}       
}


ich weiss aber nicht wie ich das wo verwenden muss :(

MCP

Alter Hase

Beiträge: 513

Wohnort: Paderborn

Beruf: Software-Entwickler

  • Private Nachricht senden

6

03.11.2011, 10:30

Nun, ich würde für jeden Monat ein StackPanel erstellen und das entsprechen jeweils mit der richtigen Anzahl an Buttons füllen.
Erste for-Schleife: Erstelle neues Stackpanel (for(int i=1; i<13;++i))
Zweite (geschachtelte Schleife) erzeuge für jeden Monat einen Button und packe ihn in das StackPanel. (for (int j=1; j<countDaysofMonth;++j))

fertig...

7

03.11.2011, 10:37

Ja genau, aber mein Problem ist ich weiss nicht "wo" die beiden Schleifen sein müssen, sind die ineinander , oder sind die getrennt in einer Methode.
so soll es aussehen (Anhang)
»nici« hat folgendes Bild angehängt:
  • kalender3.jpg

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

8

03.11.2011, 10:41

for(int i=1; i<13;++i)

ist zwar richtig, aber verwirrend. was heißt 13? Wäre "for(int i=1; i<=12;++i)" nicht schöner? Da kann man sich eher denken, dass Monate gemeint sind.
for (int j=1; j<countDaysofMonth;++j)

hier muss "for (int j=1; j<=countDaysofMonth;++j)" geschrieben werden.

@nici: Zumindest ein Fehler war, dass du bei Null angefangen zu zählen hast, aber bei 12 aufgehört. Das sind 13 Schleifendurchgänge.
Ist mir beim drüberfliegen aufgefallen.
Gibst du Button[] btns überhaupt frei? oO
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

9

03.11.2011, 10:50

danke euch.

so ich hab hier jetzt so was:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 private void TestKlasse(int k , int max)     
{         
for (int i = 0; i < 13; i++)         
{             
StackPanel stckp = new StackPanel();            
 grd_btns.Children.Add(stckp);             
Grid.SetRow(stckp, (i + 1));     
Grid.SetRow(btn, i);            
for(int j = 0; j<GetDaysOfMonth(dat); j++){                 
Button btn = new Button();                 
btn.Content=(j * 31);                 
grd_btns.Children.Add(btn);                 
               Grid.SetRow(btn, i); 
Grid.SetColumn(btn, j);                               
 }         
}              
}


und bekomme folgendes (siehe Anhang)
»nici« hat folgendes Bild angehängt:
  • TestKlasse.jpg

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »nici« (03.11.2011, 10:56)


10

03.11.2011, 11:00

so ich habs jetzt

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 private void TestKlasse(int k , int max)       
{           
for (int i = 1; i < 13; i++)            
{               
 StackPanel stckp = new StackPanel();               
grd_btns.Children.Add(stckp);               
Grid.SetRow(stckp, (i + 1));                
 // Button[] btns = new Button[365];                    
for(int j = 0; j<GetDaysOfMonth(dat); j++){                 
 Button btn = new Button();                 
 btn.Content=(j * 31);                  
grd_btns.Children.Add(btn);                     
Grid.SetRow(btn, i );                   
Grid.SetColumn(btn, j +1);                                      
}           
}                   
}


Aber wie bekomme ich denn jetzt mehrere Buttons(untereinander) in ein Feld ??

Werbeanzeige