Hallo Community,
Ich habe ein Problem mit einem TabControl in meinem Projekt.
Die Elemente auf der ersten Tabpage die ich in diesem TabControl aufrufe werden über den Anchor rezised. Funktioniert soweit wunderbar, wechsel ich allerdings die Tabpage werden die Anchor Einstellungen aus dem Designer nicht angewendet. Dies geschieht aber immer nur auf der Tabpage welche ich NICHT als Standard aufrufe.
Ich habe meinen Code nun schon sehr oft geprüft und finde den Fehler nicht. Die beiden TabPages und die Elemente darin/darauf haben identische Werte was Größe,Location,Anchor, etc. angeht.
Zur Veranschaulichung hänge ich noch ein paar Bilder an.
Hier sieht man im Designer sind die beiden Tabpages exakt identisch, starte ich das Programm im Debug wird durch die Anchor die größe der zuerst aufgerufenen Taboage samt Elementen auch angepasst, bei der zweiten Tabpage passen sich die Elemente nicht der Page an (trotz Anchor) (Gut am grauen Hintergrund zu erkennen).
Screenshot vom Fehler TabPage2 im Debug Modus:
Bei mir funktioniert der Anchor bei Winforms auch nicht immer richtig.
Abhilfe : Selber resizen !
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Kann ich bestätigen, ich hab's auch desöfteren dass Anchor aus unerkennbaren Gründen nicht funktioniert. Da hilft nur selber die Größen setzen.
Hallo,
vielen Dank für eure Antworten.
Was ist denn die sauberste Methode um das resizing selbst zu übernehmen?
Also ich kann das Verhalten nicht nachstellen. 🤔
Kannst du zufällig den Code der beides TabPages zur Verfügung stellen?
//
// tcJobFields
//
this.tcJobFields.Anchor = ((System.Windows.Forms.AnchorStyles)
(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tcJobFields.Appearance = System.Windows.Forms.TabAppearance.Buttons;
this.tcJobFields.Controls.Add(this.tpJobFields);
this.tcJobFields.Controls.Add(this.tpPositionFields);
this.tcJobFields.Location = new System.Drawing.Point(509, 7);
this.tcJobFields.Name = "tcJobFields";
this.tcJobFields.SelectedIndex = 0;
this.tcJobFields.Size = new System.Drawing.Size(448, 456);
this.tcJobFields.Style = MetroFramework.MetroColorStyle.Lime;
this.tcJobFields.TabIndex = 68;
this.tcJobFields.UseSelectable = true;
//
// tpJobFields
//
this.tpJobFields.Controls.Add(this.cbJobKeyField);
this.tpJobFields.Controls.Add(this.lblJobKeyField);
this.tpJobFields.Controls.Add(this.lvJobFields);
this.tpJobFields.Location = new System.Drawing.Point(4, 41);
this.tpJobFields.Name = "tpJobFields";
this.tpJobFields.Padding = new System.Windows.Forms.Padding(3);
this.tpJobFields.Size = new System.Drawing.Size(440, 411);
this.tpJobFields.TabIndex = 0;
this.tpJobFields.Text = "Kopfzeile";
this.tpJobFields.UseVisualStyleBackColor = true;
//
// lvJobFields
//
this.lvJobFields.Anchor = ((System.Windows.Forms.AnchorStyles)
((((System.Windows.Forms.AnchorStyles.Top |
System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.lvJobFields.AutoArrange = false;
this.lvJobFields.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.chFieldName,
this.chNr,
this.chCaption});
this.lvJobFields.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lvJobFields.FullRowSelect = true;
this.lvJobFields.GridLines = true;
this.lvJobFields.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
this.lvJobFields.Location = new System.Drawing.Point(6, 32);
this.lvJobFields.MultiSelect = false;
this.lvJobFields.Name = "lvJobFields";
this.lvJobFields.Size = new System.Drawing.Size(429, 339);
this.lvJobFields.TabIndex = 67;
this.lvJobFields.UseCompatibleStateImageBehavior = false;
this.lvJobFields.View = System.Windows.Forms.View.Details;
//
// tpPositionFields
//
this.tpPositionFields.BackColor = System.Drawing.SystemColors.Control;
this.tpPositionFields.Controls.Add(this.cbPositionKeyField);
this.tpPositionFields.Controls.Add(this.lblPositionKeyField);
this.tpPositionFields.Controls.Add(this.lvPositionFields);
this.tpPositionFields.Location = new System.Drawing.Point(4, 41);
this.tpPositionFields.Name = "tpPositionFields";
this.tpPositionFields.Padding = new System.Windows.Forms.Padding(3);
this.tpPositionFields.Size = new System.Drawing.Size(440, 411);
this.tpPositionFields.TabIndex = 1;
this.tpPositionFields.Text = "Positionszeile";
//
// lvPositionFields
//
this.lvPositionFields.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.lvPositionFields.AutoArrange = false;
this.lvPositionFields.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.chFieldName2,
this.chNr2,
this.chCaption2});
this.lvPositionFields.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lvPositionFields.FullRowSelect = true;
this.lvPositionFields.GridLines = true;
this.lvPositionFields.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
this.lvPositionFields.HideSelection = false;
this.lvPositionFields.Location = new System.Drawing.Point(6, 32);
this.lvPositionFields.MultiSelect = false;
this.lvPositionFields.Name = "lvPositionFields";
this.lvPositionFields.Size = new System.Drawing.Size(429, 339);
this.lvPositionFields.TabIndex = 68;
this.lvPositionFields.UseCompatibleStateImageBehavior = false;
this.lvPositionFields.View = System.Windows.Forms.View.Details;
Was für ein TabControl nutzt du? Da sind nämlich Eigenschaften bei, die das normale TabControl nicht hat. =)
Ansonsten funktioniert aber auch der Code.
Kannst du evtl. das Projekt in abgespeckter Form zur Verfügung stellen?
Ich nutze das MetroFramework für die TabControls, diesen Fehler hatte ich aber auch mit den normalen Windows Forms. Witzigerweise passiert dieser Fehler nur in meiner kleinen TabControl.
Ich kann einmal zumindest versuchen das Projekt soweit zur Verfügung zu stellen. Ich bin allerdings noch Anfänger also bitte nachsicht falls es dann Fehler ohne Ende enthält 😁
ich bevorzuge und benutze immer Docking - evtl. kombiniert mit einem TableLayoutpanel.
Damit krieg ich bislang jedes Layout ohne eigenen Sizing-Code hin, und funzt auch immer.
Zum die möglichkeiten angugge video:
Layout in WinForms
Der frühe Apfel fängt den Wurm.
Ich habe mich hier in der Zwischenzeit durch das Forum gelesen und auch schon einen Thread entdeckt wo du TableLayoutPanel usw. erklärt und empfohlen hast. Ich hatte nun in der Zwischenzeit mit Splitcontainer meine Tabpage zersplittert und hier dann die Listview auf Dock: Fill gesetzt. Es ist schon besser aber ich verzweifle immernoch. Mittlerweile ist es so, dass im 2. Tab die Listview durch Dock größer wird als die Tabpage? Hä? Ich verstehe einfach nicht was dort Falsch läuft.
Hallo,
ich hatte mir das Bild in den Grafikeditor geladen, wenn ich jetzt nicht ganz blind bin im Schädel, seh ich keinen Unterschied von der Anzahl der Pixel her...
Grüße
Ich habe den Titel mal angepasst, so dass Suchende auch etwas damit anfangen können. EDIT: Ich sollte beim Wort "Shift" im Titel das "f" nicht vergessen... 😄
Bei der Positionszeile fehlt wenn man so möchte der untere Rand
Keine Full Quotes
[Hinweis] Wie poste ich richtig?
Kannst du evtl. das Projekt in abgespeckter Form zur Verfügung stellen?
😉