C# geek’ams :D – force’iname Windows Form’os refresh’ą
Šitas dalykas daug nervų sugadino, kol susigaudžiau kame replės.
O esmė ta, kad priskiri delegatą eventui, ir kai delegatas executina funkciją, kuri nuskaito duomenis iš user RTFBox input’o įrašydamas į List variable’ą per Add(), o Windows forma buvo sukurtas turinti ‘DataGridView’ objektą, kurios konstruktoriuje yra aiškiai nurodyta:
public StackForm(ref Stack refToStack)
{
<...>
this.stackDataGridView.DataSource = refToStack.stackData;
<...>
}
Padarius bet kokį Add’ą, Remove’ą, Forma elgdavosi labai keistai – tai sureguodamo, tai nesureguodamo, tai rodydavo kad pridėtų elementų nėra, arba rodydavo nebeegzistuojančius elementus, o ant jų paspaudus execeptionus pradėdavo mėtyti.
Taigi teko susirasti WorkAround’ą
, ir šitas bajeris labai efektyviai veikia, tiesiog po bet kokių pokyčiu List variable’a(aka kolekcijoje), formos data bind’o update’ą forsuojame iškviesdami funkciją:
public void updateStackData()
{
// Force a refresh of the DataGridView
((CurrencyManager)stackDataGridView.BindingContext[this.stack.stackData]).Refresh();
}
Tikiuosi kam nors padės
.