Męczę się już drugi dzień z rzędu z problemem i już kończą mi się pomysły powoli.,,
Problem wygląda następująco. Mam główny form, na którym znajduje się TabControl z kilkoma stronami a na nich kilka zwykłych paneli na których umieszczone są TableLayoutPanele. Te ostatnie znajdują się po to aby po maksymalizacji głównego okna, wszystkie elementy które znajdują się na nich ,gładko "rozeszły" się po całym formularzu. Wszystko jest okej do momentu gdy jestem na konkretnej stronie TabControla na której znajdujące się tam elementy(Panel->TableLayoutPanel->TextBoxy,Buttony) mają się przemieścić Czyli jestem na pierwszej stronie TabControla maksymalizuję okno, przechodzę do trzeciej strony TabControla i robi się za przeproszeniem syf. Jestem na trzeciej stronie TabControla,maksymalizuję,minimalizuję etc. i wszystko jest ok.
Mam nadzieję że udało mi się to jakoś sensownie wytłumaczyć jeśli nie to wstawiam swoją radosną twórczość co by trochę zobrazować problem.
Czarny - TabControl i Panele,
Pomarańcz - TableLayoutPanel,
T - Textboy,Buttony itp.
O to co na razie udało mi się wyskrobać. Czy idę w dobrym kierunku? Czy może trzeba zabrać się za to z zupełnie innej strony ?
private void applicationMaximizeBtn_Click(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Maximized)
{
this.WindowState = FormWindowState.Normal;
}
else if (WindowState == FormWindowState.Normal)
{
this.WindowState = FormWindowState.Maximized;
}
//Przesunięcie trzech paneli widocznych na rysunku w określone punkty na formie.
ResizeTab(borrowBookPanel, borrowBookLayout, 160, 10, 0, 0, 50);
ResizeTab(borrowUserPanel, borrowUserLayout, 640, 10, 265, 0, 50);
ResizeTab(borrowPanel, borrowLayout, 1120, 10, 547, 0, 70);
private void ResizeTab(MetroPanel mp, TableLayoutPanel tlp,
int newXPanelLocation, int newYPanelLocation,
int oldXPanelLocation, int oldYPanelLocation, int newPanelWidth)
{
if (WindowState == FormWindowState.Maximized)
{
mp.Location = new Point(newXPanelLocation, newYPanelLocation);
mp.Width += newPanelWidth;
foreach (var label in tlp.Controls.OfType<MetroLabel>())
{
label.Height += 5;
label.FontSize = MetroLabelSize.Tall;
}
foreach (var textBox in tlp.Controls.OfType<MetroTextBox>())
{
textBox.Height += 5;
textBox.FontSize = MetroTextBoxSize.Tall;
}
}
else if (WindowState == FormWindowState.Normal)
{
var oldLocation = new Point(oldXPanelLocation, oldYPanelLocation);
mp.Location = oldLocation;
mp.Width -= newPanelWidth;
foreach (var label in tlp.Controls.OfType<MetroLabel>())
{
label.Height -= 5;
label.FontSize = MetroLabelSize.Medium;
}
foreach (var textBox in tlp.Controls.OfType<MetroTextBox>())
{
textBox.Height -= 5;
textBox.FontSize = MetroTextBoxSize.Small;
}
}