C#: WinForms, TabControl, TabPage probléma

Programozással kapcsolatos cikkek / C# (250 katt)

Egy C#-ban készült, Windows Forms-t használó programnál a következőkben ismertetett problémával találkoztam.

A formon egy TabControl és ezen belül több TabPage volt elhelyezve. Minden fülön több TextBox volt található, amelyeknek az értékét a program automatikusan feltöltötte, legalábbis ez lett volna a cél. Amikor ezeket az értékeket rögzíteni szerettem volna az adatbázisba, akkor nem a helyes tartalom került be ide, hanem null értékeket láttam a táblában, mintha az editorok nem lettek volna kitöltve.

Fontos momentum volt az, amikor rájöttem, hogy ez a jelenség csak akkor fordult elő, ha nem kattintottam végig az összes fület.

Ennek a problémának a hátterében a TabControl következő tulajdonsága áll (idézet a Microsoft dokumentációból):

Controls contained in a TabPage are not created until the tab page is shown, and any data bindings in these controls are not activated until the tab page is shown.

Megoldásként a következő workaround volt használható, amellyel aktiváltam az egyes oldalakat:

public void ActivateTabControl(TabControl tabControl)
{
foreach (TabPage page in tabControl.TabPages)
{
page.Show();
}
}



Előző oldal Kapitány