2012-03-26

Winforms - bugi

Tutaj dobre źródło informacji o błędzie: http://social.msdn.microsoft.com/Forums/ar/winformsdesigner/thread/6f56b963-df4d-4f26-8dc3-0244d129f07c

Post jest z 2006 roku. Mamy 2012 i błąd ciągle jest. Jestem prawie pewien, że został zgłoszony nie raz.

W skrócie chodzi o to, że jeśli umieścimy sobie ToolStrip na TabPage to ten ToolStrip sobie potrafi losowo zniknąć. U mnie najczęściej kiedy kliknę w jakiś przycisk i przeskakuje do kodu.

Rozwiązanie tymczasowe to włączenie wszystkich ToolStrip-ów na starcie aplikacji. Inaczej ryzykujemy z dużym prawdopodobieństwem wypuszczenie aplikacji z pewnymi brakami.

I nie jest to jedyny antyczny bug. Z pamięci ostatnio napotkane mam jeszcze dwa.

Pierwszy związany z serializacją do XML. Jeśli nasza klasa A implementuje interfejs IEnumerable<B>, zaś B implementuje interfejs IEnumerable<C>, zaś C to zwykły obiekt to serializacja obiektu A spowoduje błąd. Generator kodu serializującego zagnieżdża kod w kodzie, w tym wypadku w kodzie serializacji klasy A zagnieżdżany jest kod serializacji klasy B, tylko, że nikt nie wpadł na pomysł zmiany nazw lokalnych zmiennych. I otrzymujemy naprawdę dziwny komunikat o błędzie.

Tutaj jest opis tego błędu: http://connect.microsoft.com/VisualStudio/feedback/details/97762/serializing-types-that-implement-ienumerable-t-causes-error-cs0136. Z roku 2006.

Kolejny to mruganie ListBox-a. Tutaj użyłem jakiegoś kodu z 2008 roku, by to połatać.

Czasami chciałbym żeby Microsoft po prostu połatał swoje produkty, wydał jakąś wersję typu breaking changes i pousuwał bugi, dokonał jakiegoś większego refaktoringu. Np. na szeroką skalę skorzystał z klas generycznych.

2012-04-25:

kolejny bug, kiedy nasz ListBox ma ustawiony IntegralHeight na false i jego wysokość jest taka, że ostatni item wyświetla się w połowie, to jeśli wybierzemy ostatni item do zaznaczenia, scroll ustawi się tak, że będzie on widoczny tylko w połowie.

kolejny bug, prawie nie możliwe jest odtworzenie programowe zaznaczanie, tak by ponowne kliknięcie z shiftem wybrało nowy prawidłowy obszar. Innymi słowy jeśli zaznaczymy od A do B z shiftem, odbudujemy programowo takie zaznaczenie to kiedy naciśniemy na C z shiftem to dostaniemy zaznaczenie od B do C. Pod warunkiem, że indeks C jest większy od indeksy B.

Brak komentarzy:

Prześlij komentarz