Autor Beitrag
winx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 249



BeitragVerfasst: Do 06.07.06 10:32 
Hallo,

ich habe ein TableLayouPanel mit 1 Spalte und 4 Zeilen (Height 25%).
In jeder dieser Zellen soll ein Button zur Laufzeit hinzugefügt werden.

Da ich nicht weiss, wie viele Buttons dazukommen, kann es gut möglich sein,
dass die Anzahl der Zeilen ständig erhöht wird.

Die Gesamthöhe der Tabelle soll jedoch konstant bleiben.

Nun möchte ich, sobald ein Button neu dazukommt, die Spaltenhöhe (in %)
verringern, damit alles wieder passt.

Der Button selbst soll seine Größe dynamisch an den Zellen-Containter anpassen.

Bsp:

5 Buttons => Jeder 20% groß
10 Buttons => Jeder 10% groß

usw


Leider bekomme ich immer wenn ich mit

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
button.Dock = DockStyle.Fill;
button.AutoSize = true;
button.AutoSizeMode = AutoSizeMode.GrowAndShrink;

tableControlButtons.Controls.Add(button, m_column, 0);

TableLayoutRowStyleCollection styles =
                m_MainForm.tableControlButtons.RowStyles;
            
foreach (RowStyle style in styles)
{
      style.SizeType = SizeType.Percent;
      style.Height = 100 / tableControlButtons.RowCount;
                
}


einen weiteren Button dazufüge, nicht den gewünschten Effekt.
Es werden nur irgendwie die ersten 4 verändert. Alle weiteren (neu hinzugefügten)
bleiben unverändert...

Kann mir jemand helfen ??? Oder wo liegt mein Fehler?

danke,
winx
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 08.07.06 22:16 
Wenn ich das richtig sehe, willst Du doch auch in der Tabelle eine neue Zeile haben, oder? Dann sähe das so aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
  var newButton := new Button();
  
  newButton.Name := 'button'+tableLayoutPanel1.RowCount.ToString;
  newButton.Text := newButton.Name;
  newButton.Dock := DockStyle.Fill;
  newButton.UseVisualStyleBackColor := true;
  
  tableLayoutPanel1.RowCount := tableLayoutPanel1.RowCount +1;  
  tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 100 / tableLayoutPanel1.RowCount));

  for each r : RowStyle in tableLayoutPanel1.RowStyles do
     r.Height := 100 / tableLayoutPanel1.RowCount;
    
  tableLayoutPanel1.Controls.Add(newButton, 0, tableLayoutPanel1.RowCount-1);

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
winx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 249



BeitragVerfasst: Mo 10.07.06 10:43 
Erstmal: danke Christian!

Wenn ich das ganze jetzt folgendermaßen hinzufüge,
passiert leider auch nichts.

Ich möchte halt, dass die Tabelle sich den hinzugefügten Buttons anpasst
und man dynamisch Buttons zufügen kann. Sprich, die Gesamtgröße der Tabelle
bleibt konstant.
Wenn ich nun ne Zeile zufügen will, werden alle anderen kleiner, wenn ich eine
entferne, alle andren größer.

Bei mir ändert sich aber immer die Gesamtgröße...

Der Code sieht so aus:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
public void createActionButton(string text, ICommand command)
        {
            ActionButton button = new ActionButton();
            button.Visible = true;
            button.setActionText(text);
            button.ActionCommand = command;
            button.Dock = DockStyle.Fill;
            button.AutoSize = true;
            button.AutoSizeMode = AutoSizeMode.GrowAndShrink;             
                   
            m_MainForm.tableControlButtons.RowCount = m_MainForm.tableControlButtons.RowCount +1;  
            m_MainForm.tableControlButtons.RowStyles.Add(new RowStyle(SizeType.Percent, 100 /
                 m_MainForm.tableControlButtons.RowCount));

            foreach (RowStyle style in m_MainForm.tableControlButtons.RowStyles)
          {
                style.SizeType = SizeType.Percent;
                style.Height = 100 / m_MainForm.tableControlButtons.RowCount;
          }

            m_MainForm.tableControlButtons.Controls.Add(button, m_MainForm.tableControlButtons.RowCount - 10);   

 
        }


Ich habe ein Bild der derzeitigen Tabelle angehängt. Sie sollte normalerweise nur bis zum unteren (türkisenen) Strich gehen...
Einloggen, um Attachments anzusehen!
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 10.07.06 10:48 
Könnte es an dem Autosize des Buttons liegen? Wenn Du DockType auf Fill stellst, brauchst Du den doch gar nicht.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
winx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 249



BeitragVerfasst: Mo 10.07.06 11:19 
hab ich gemacht, ändert aber leider auch nichts. Die tabelle fügt alles unten dran, die buttons ehlaten ihre "normale" größe, nur die gesamttabelle wird höher...
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 10.07.06 11:22 
Dann musst Du mal schauen, ob Du etwas in den Einstellungen für die Tabelle geändert hast. Bei meinem obigen Code bleibt die Höhe der Tabelle konstant.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
winx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 249



BeitragVerfasst: Mo 10.07.06 11:44 
jawohl, jetz habe ich den Fehler: Die Tabelle stand auf Autosize :-)

Danke für deine Hilfe!!!