Ich habe ein Problem mit einem benutzerdefinierten TabPage und Anker. In meiner Lösung möchte ich eine Vorlage für eine Registerkarte verwenden und sie basierend auf der Benutzerauswahl mehrmals hinzufügen.Benutzerdefinierte Registerkarte und Anker
Dies ist meine Vorlage:
public class ATMTemplate : TabPage
{
#region Fields
#endregion
#region Properties
public List<LogFile> LogFiles { get; set; }
public GroupBox GroupFiles { get; set; }
public DataGridView DGV_LogFiles { get; set; }
#endregion
#region Constructors
public ATMTemplate(string directory, TabControl parent)
{
this.Text = "ATM TEST 2";
this.Parent = parent;
this.LogFiles = new List<LogFile>();
this.GroupFiles = new GroupBox();
this.DGV_LogFiles = new DataGridView();
this.Controls.Add(this.GroupFiles);
this.GroupFiles.Location = new Point(6, 6);
this.GroupFiles.Text = "Log files:";
this.GroupFiles.AutoSize = true;
this.GroupFiles.Anchor = (AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top);
this.GroupFiles.Controls.Add(this.DGV_LogFiles);
this.DGV_LogFiles.Location = new Point(9, 18);
this.DGV_LogFiles.AutoSize = true;
this.DGV_LogFiles.Anchor = (AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top);
this.Invalidate();
}
#endregion
#region Methods
#endregion
}
Und ich schaffe meine TabPages mit diesem:
ATMTemplate atm = new ATMTemplate("", tc_ATMs);
Was nun das „Verzeichnis“ Teil des Konstruktor wird nicht verwendet. Nachdem ich eröffne mein TabPage ich so etwas wie dieses:
Nachdem ich die Vollbild-Schaltfläche klicken, zeigt es mir dieses:
Und wenn ich an den Fenstermodus wieder die Kontrollen don‘ t schrumpfen, und ich bin mit dieser links:
hat jemand eine Ahnung, was ich in den Code falsch gemacht haben?
Ich denke, das Mischen von 'AutoSize' und' Anchor' kann ein Problem sein. Ich würde versuchen, 'AutoSize = false' zu setzen, die anfängliche' Size' und 'Location' entsprechend der aktuellen' Size' von 'TabPage' einzustellen und dann die' Anchors' zu setzen. Eine andere Möglichkeit (für den gezeigten Fall) könnte sein, "Dock = DockStyle.Top" oder "DockStyle.Fill" zu verwenden. –
Ich könnte das Dock.Fill auf der DataGridView aber nicht auf der GroupBox verwenden. Ich habe die GroupBox.AutoSize auf false gesetzt und nichts geändert. Es half nur die anfängliche Breite der Groupbox. –