myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: Windows-Forms » Nebeneinanderstehende Controls beim Resize nicht überlappen
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Nebeneinanderstehende Controls beim Resize nicht überlappen

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
ado683 ado683 ist männlich
myCSharp.de-Mitglied

Dabei seit: 24.01.2019
Beiträge: 27
Entwicklungsumgebung: visual studio


ado683 ist offline

Nebeneinanderstehende Controls beim Resize nicht überlappen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

wie kann ich bei winforms es hinbekommen, dass ich labels textboxen die nebeneinander sind vergrößern und verkleinern kann ohne das sie praktisch beim vergrößern ineinander verschwinden.

Im Anhang ist ein Bild, dann wisst ihr was ich meine.

ado683 hat dieses Bild (verkleinerte Version) angehängt:
Frage.png
Volle Bildgröße

19.02.2019 14:22 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
david.m
myCSharp.de-Mitglied

Dabei seit: 02.06.2013
Beiträge: 94


david.m ist online

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Für das Layout habe ich immer  FlowLayoutPanel und  TableLayoutPanel verwendet.

 TableLayoutPanel-Steuerelement (Windows Forms)
19.02.2019 16:44 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Frokuss
myCSharp.de-Mitglied

Dabei seit: 26.08.2015
Beiträge: 156


Frokuss ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hey hey,

ganz genau weis ich nicht was du mit dem vergrößern / verkleinern meinst... Meinst du z.B. du vergrößerst das Fenster und der Inhalt soll sich dynamisch anpassen? Wenn das der Fall ist, kannst du dir mal das Resize-Event angucken.

Ich würde mir um die vier Elemente ein Panel setzen und dann etwas ähnliches wie folgenes draus machen:

C#-Code:
//lab1 = "IP"
//lab2 = "Port"
//tb1 = Textfeld "IP"
//tb2 = Textfeld "Port"
private void OnResizePanel(object sender, EventArgs evt){
  Panel pan = (Panel)sender;
  lab1.Left = 10;
  lab1.Width = 30;

  tb1.Left = lab1.Left + lab1.Width;
  tb1.Width = (pan1.Width / 2) - tb1.Left; //würde dann bündig in der Mitte abschließen

  //und weiter mit den anderen beiden Elementen
  lab2.Left = tb1.Left + tb1.Width;
  //...
}

Du müsstest natürlich das Event dann an das Panel koppeln... oder du koppelst das direkt an das Fenster. Beim Fenster würde es dann automatisch gefeuert, wenn du die Fenstergröße veränderst, beim Panel müsstest du eine Starthilfe geben... z.B: "Panel.Width = 1000;"

Oder du suchst nach sowas:

C#-Code:
//Weis aber nicht ob es das auch für Label, etc. gibt... Habs bisher nur für Fenster verwendet..
this.MinimumSize = new Size(this.Width, 200);
this.MaximumSize = new Size(this.Width, this.Height);

Gruß Frokuss
19.02.2019 18:56 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.637
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Das geht einfacher mit der Anchor-Eigenschaft, s.a.  Working with Anchoring and Docking Properties.
19.02.2019 19:26 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
ado683 ado683 ist männlich
myCSharp.de-Mitglied

Dabei seit: 24.01.2019
Beiträge: 27
Entwicklungsumgebung: visual studio

Themenstarter Thema begonnen von ado683

ado683 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Das habe ich versucht.

Du siehst ja in meinem Bild, dass ich z. B. vier Elemente nebeneinander habe. IP-Label, Texbox(für die IP), Port-Label, Textbox(für den Port).
Wenn ich diese nun links und rechts verankere und dann das Fenster verkleinere dann überlappen sich die Elemente, so dass sie nicht mehr sichtbar sind.

Was tun?
20.02.2019 08:25 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
p!lle
myCSharp.de-Mitglied

avatar-3556.jpg


Dabei seit: 22.02.2007
Beiträge: 1.032
Entwicklungsumgebung: Visual Studio (Community) 2019


p!lle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Du kannst ein Element ja an mehreren Seiten verankern, spiele damit mal rum. fröhlich
20.02.2019 08:55 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
david.m
myCSharp.de-Mitglied

Dabei seit: 02.06.2013
Beiträge: 94


david.m ist online

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich habe länger nichts mehr mit Winforms gemacht.

Tablelayout und die Controls in die Zelle setzen und entsprechende Colspan, Dock, AutoSize setzen.
- 4 Spalten (auto, 100%, auto, 100%)
- 3 Zeilen (auto, auto, 100%)

------------------------------------------------------------
| IP | 127.0.0.1              | Port | 45455               |
------------------------------------------------------------
|                    Start / Stop Server                   |
------------------------------------------------------------
|                                                          |
|                                                          |
|                                                          |
------------------------------------------------------------
20.02.2019 09:04 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
ado683 ado683 ist männlich
myCSharp.de-Mitglied

Dabei seit: 24.01.2019
Beiträge: 27
Entwicklungsumgebung: visual studio

Themenstarter Thema begonnen von ado683

ado683 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

habe da schon alle möglichkeiten durchprobiert. gut wäre es wenn man die elemente aneinander irgendwie ankern kann.
20.02.2019 09:07 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.637
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Es klappt, wenn nur genau 1 Element mit (Left, Right) verankert wird und die anderen nur mit entweder Left oder Right, so daß also nur dieses eine Element vergrößert/verkleinert wird.

Wenn du jedoch beide Textboxen vergrößern/verkleinern möchtest, dann wie "david.m" erklärt hat (wollte dies auch gerade so schreiben ;-).
Alternativ geht auch nur für die obere Zeile ein TableLayoutPanel benutzen.

Wenn du mehrere Forms mit der Kombination "Label/TextBox" hast, dann solltest du daraus ein UserControl machen (mit den entsprechenden Anchor-Einstellungen etc.), so daß du dann einfach dieses jeweils platzierst.
20.02.2019 09:14 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
ado683 ado683 ist männlich
myCSharp.de-Mitglied

Dabei seit: 24.01.2019
Beiträge: 27
Entwicklungsumgebung: visual studio

Themenstarter Thema begonnen von ado683

ado683 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

das hört sich doch mal gut an versuche das mal.
thx
20.02.2019 09:50 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
ado683 ado683 ist männlich
myCSharp.de-Mitglied

Dabei seit: 24.01.2019
Beiträge: 27
Entwicklungsumgebung: visual studio

Themenstarter Thema begonnen von ado683

ado683 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von david.m:
Ich habe länger nichts mehr mit Winforms gemacht.

Tablelayout und die Controls in die Zelle setzen und entsprechende Colspan, Dock, AutoSize setzen.
- 4 Spalten (auto, 100%, auto, 100%)
- 3 Zeilen (auto, auto, 100%)

------------------------------------------------------------
| IP | 127.0.0.1              | Port | 45455               |
------------------------------------------------------------
|                    Start / Stop Server                   |
------------------------------------------------------------
|                                                          |
|                                                          |
|                                                          |
------------------------------------------------------------

nachdem ich es so editiere und auf ok klicke, macht er jedes mal die spalten wieder auf 50% anstatt 100, bei den zeilen geht es komischerweise. und obwohl ich 4 spalten angebe und 3 zeilen. gibt er mir nur 2 spalten und eine zeile aus.
21.02.2019 12:11 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
david.m
myCSharp.de-Mitglied

Dabei seit: 02.06.2013
Beiträge: 94


david.m ist online

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von ado683:
spalten wieder auf 50% anstatt 100

Das ist auch Okay so, die angegebenen Prozente werden verteilt das in der Summe wieder 100% rauskommt.

Zitat von ado683:
gibt er mir nur 2 spalten und eine zeile aus

Im Designer sind die auto Spalten/Zeilen nicht zusehen, solange dort sich kein Control befindet.
21.02.2019 12:37 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
ado683 ado683 ist männlich
myCSharp.de-Mitglied

Dabei seit: 24.01.2019
Beiträge: 27
Entwicklungsumgebung: visual studio

Themenstarter Thema begonnen von ado683

ado683 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von david.m:
Das ist auch Okay so, die angegebenen Prozente werden verteilt das in der Summe wieder 100% rauskommt.

ok dafür schon mal thx

Zitat von david.m:
Im Designer sind die auto Spalten/Zeilen nicht zusehen, solange dort sich kein Control befindet.

aber wenn ich ihm jetzt sage gib mir 4 spalten und drei zeilen dann haben ja zeile 2 und 3 auch vier spalten aber das will ich ja nicht.

verstehst du was ich meine?
21.02.2019 14:26 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
david.m
myCSharp.de-Mitglied

Dabei seit: 02.06.2013
Beiträge: 94


david.m ist online

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Die Control der 2. und 3. Zeile in der ersten Spalten platzieren und für die Controls  ColumnSpan setzen.
21.02.2019 14:32 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Jahr.
Der letzte Beitrag ist älter als ein Jahr.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 04.07.2020 19:50