| Autor |
Nachricht |
tüfftüff
Unregistrierter
|
tüfftüff Unregistrierter
10:04:29 16.08.2012 Titel: |
Dynamisch Erzeugte Controls auf einem Panel zentrieren |
Zitieren |
Hallo Leute,
ich erzeuge dynamisch Buttuns in einem Panel. Mal 7, mal 3, variabel halt. Im moment werden die linksbündig angeordnet( btn_x.Location(x,y)) und dann veränder ich halt nach jedem schleifendurchlauf die Position von x und y. jetzt möchte ich aber das die Controls zentriert angeordnet werden in dem Panel. Aber irgendwie stell ich mich grade total dämlich an das zu realisieren. Kann mir bitte jemand auf die Sprünge helfen? Vielen Dank |
|
|
|
 |
EXDW
Mitglied
Benutzerprofil
Anmeldungsdatum: 09.08.2005
Beiträge: 4732
|
EXDW Mitglied
12:13:24 16.08.2012 Titel: |
|
Zitieren |
Welche Technologie?
Was hast du bisher? |
|
|
|
 |
tüfftüff
Unregistrierter
|
tüfftüff Unregistrierter
13:00:58 16.08.2012 Titel: |
|
Zitieren |
ich benutze Visiual Studio 2010 und programmiere mit c#
bisher habe ich das | C#: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | private void button1_Click(object sender, EventArgs e)
{
Button[] btn = new Button[Convert.ToInt16(textBox1.Text)];
int x = 10;
int y = 20;
for (int i=0; i <(Convert.ToInt16(textBox1.Text)); i++)
{
btn[i] = new Button();
btn[i].Location = new Point(x, y);
btn[i].Size = new Size(50, 50);
this.panel1.Controls.Add(btn[i]);
x = x + 60;
}
} | |
das panel geht über die ganze Form. Die Buttons werden jetzt halt links angeordnet sollen aber zentral werden...Für jede hilfe bin ich dankbar |
|
|
|
 |
inflames2k
Mitglied
Benutzerprofil
Anmeldungsdatum: 02.06.2009
Beiträge: 768
|
inflames2k Mitglied
14:10:23 16.08.2012 Titel: |
|
Zitieren |
Berechne die Position von Links. Ist ganz einfach.
(Panelbreite - Controlbreite) / 2 |
_________________ Ich will kein For ech. Ich will wissen was dahinter steckt, sonst stehe ich immer wieder vor dem Problem...
Das ist dreckige kapitalischtische Scheisse!!!
|
|
 |
EXDW
Mitglied
Benutzerprofil
Anmeldungsdatum: 09.08.2005
Beiträge: 4732
|
EXDW Mitglied
07:13:40 17.08.2012 Titel: |
|
Zitieren |
Gibts in Forms keine Layout Container die das schon können? |
|
|
|
 |
tüfftüff
Unregistrierter
|
tüfftüff Unregistrierter
09:16:43 17.08.2012 Titel: |
|
Zitieren |
| inflames2k schrieb: | Berechne die Position von Links. Ist ganz einfach.
(Panelbreite - Controlbreite) / 2 |
wenn ich das so mache ist der 1. Button in der Mitte. ich möchte aber zum beispiel wenn ich 3 buttons erzeuge das die miitte von dem zweiten button auch in der mitte von dem Panel ist. komisch komisch alle |
|
|
|
 |
Dravere
Moderator
Benutzerprofil
Anmeldungsdatum: 13.06.2005
Beiträge: 8203
|
Dravere Moderator
10:45:18 17.08.2012 Titel: |
|
Zitieren |
| David W schrieb: | | Gibts in Forms keine Layout Container die das schon können? |
Doch. Man könnte das TableLayoutPanel verwenden. 3 Kolonnen, linke Kolonne 50%, rechte Kolonne 50% und die in der Mitte auf AutoSize setzen.
Grüssli |
_________________ Danke für die Hilfe, Antwort oder Meinung!
C++: Std-Lib Referenz
C# .Net: MSDN kennt die Antwort
|
|
 |
EXDW
Mitglied
Benutzerprofil
Anmeldungsdatum: 09.08.2005
Beiträge: 4732
|
EXDW Mitglied
11:42:03 17.08.2012 Titel: |
|
Zitieren |
Klingt besser, dann kann er seine Buttons die Kürzer sind in der mittleren Spalte Links ausrichten ...
//Edit:
Les grad das er das gar nicht will ^^
@tüfftüff
du musst den Abstand natürlich für jedes Control separat berechnen, dann müssten alle Buttons in der Mitte sein. |
Zuletzt bearbeitet von EXDW am 11:43:42 17.08.2012, insgesamt 1-mal bearbeitet |
|
 |
tüfftüff
Unregistrierter
|
tüfftüff Unregistrierter
11:52:32 17.08.2012 Titel: |
|
Zitieren |
gute ide emti dem tlp. hab ich nun so eingestellt( die Columms) aber wenn ich jetzt die buttons dadrin erstellen lasse dann packt er nur einen in die Mitte und danach kommt der nächste in die 3 kolonne. Mache ich zum beispiel einen 4 geht er in eine neue Reihe die ich gar nicht eingestellt habe. Aber hier mal mein code:
| C#: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | private void button1_Click(object sender, EventArgs e)
{
Button[] btn = new Button[Convert.ToInt16(textBox1.Text)];
for (int i=0; i <(Convert.ToInt16(textBox1.Text)); i++)
{
btn[i] = new Button();
btn[i].Size = new Size(50, 50);
this.tableLayoutPanel1.Controls.Add(btn[i],1,0);
}
} | | |
|
|
|
 |
Dravere
Moderator
Benutzerprofil
Anmeldungsdatum: 13.06.2005
Beiträge: 8203
|
Dravere Moderator
13:45:27 17.08.2012 Titel: |
|
Zitieren |
Ehm, ja, du müsstest natürlich die Anzahl Kolonnen und Reihen nach deinen Bedürfnissen einstellen und deine Controls in die entsprechenden Zellen verteilen.
Oder ich verstehe nicht so recht, was du eigentlich möchtest
Grüssli |
_________________ Danke für die Hilfe, Antwort oder Meinung!
C++: Std-Lib Referenz
C# .Net: MSDN kennt die Antwort
|
|
 |