Į pradžią > programavimas > C# geek’ams :D – force’iname Windows Form’os refresh’ą

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’ą :D , 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 :) .

  1. Komentarų dar nėra.
  1. Atsekčių dar nėra.