Article View: alt.pl.comp.lang.csharp
Article #22422Re: ListBox przewija się do góry przy zmianie zawartości.
From: Łukasz 'Maly' Ostrowski
Date: Sun, 12 Aug 2012 22:37
Date: Sun, 12 Aug 2012 22:37
69 lines
3945 bytes
3945 bytes
On Sun, 12 Aug 2012 22:41:07 +0200, Netx wrote: > W dniu 2012-08-12 21:28, Łukasz 'Maly' Ostrowski pisze: >> On Sun, 12 Aug 2012 19:37:09 +0200, Netx wrote: >>> <snip> jednak za każdym razem gdy wpisuję/aktualizuję >>> "tytuł" nowej pozycji, lista jest przewijana do góry po instrukcji: >>> lb.Items[pos] = nrScreen.ToString() + ". " + newName; >>> Czy istnieje możliwość aby przy wykonywaniu powyższej linijki dla >>> pozycji niewidocznych, lista nie przewijała się na ekranie automatycznie >>> na samą górę? >> >> http://pastebin.com/RmcumkFT > > Dziękuję za odpowiedź! > Jakiego C# używasz? Mój kompilator tego nie rozumiał: > new Thread(() => button2_Click(sender, e)).Start(); C# 3.0, .NET Framework 3.5 jest targetem. Visual Studio 2010. To czego kompilator nie zrozumiał to "Lambda Expression": http://msdn.microsoft.com/en-us/library/bb397687.aspx > Mam Microsoft Visual C# 2010 (Express) i zrobiłem lekką modyfikację - > podaję niżej. Jeśli masz nowsze C# to nie wiem czy mogę się przesiąść > ponieważ program być może chciałbym udostępnić za darmo a więc musi być > możliwość łatwego uruchomienia przez użytkowników (nie wiem czy nowsze > środowisko uruchomieniowe C# jest dostępne dla wszystkich i darmowe). Twój Express 2010 też powinien to skompilować bez problemu. Wszystko jest darmowe, ale to nie jest kwestia wersji środowiska. > Jeśli dobrze użyłem tego narzędzia "pastebin.com" to tu jest kod: > http://pastebin.com/0FAgJNxP > > Naciskam "button 1" > program wypełnia ListBox OK > Przewijam listę myszą na ekranie np. na sam koniec > Naciskam "button 2" > program zmienia jedną pozycję (OK) ale jednocześnie przewija mi listę > na samą górę (tego chcę uniknąć). Udało mi się powielić, to jest ficzer ListBox'a. Jeżeli interesują Cię szczegóły to wystarczy zdekompilować System.Windows.Forms. (Spowodowane jest to tym, że ListBox "nie aktualizuje" istniejącej pozycji, tylko usuwa i wstawia nową pozycję przy zmianie etykiety i to wymusza odświeżenie zaznaczenia/przesunięcie scrolli: http://pastebin.com/WZsXtBMS ) > Generalnie chcę aby użytkownik mógł sobie przeglądać ten ListBox zanim > jeszcze będzie on do końca wypełniony danymi (które się wolno ściągają > ze wzmacniacza przez sieć). >> Zawsze się możesz posrednio zbindować do kolekcji za >> pomocą DataSource, zmieniać kolekcję i tylko wymuszać >> odrysowanie Refresh'em. > > Dzięki za naprowadzenie. Ewentualnie spróbuję ten metody. Tej, albo pójdź na łatwiznę i zastąp ListBox'a za pomocą ListView z ListView.View = List, tam się nic takiego nie dzieje. Pozatym, poważnie, zrób to porządnie, bez tego: CheckForIllegalCrossThreadCalls = false; ...bo nagle uderzysz w jakiś specyficzny stan i przestanie działać z losowymi efektami ;-). -- Pozdrawiam, Łukasz 'Maly' Ostrowski. http://l3v.pl/
Technical Details
Message-ID:
<7co0bmdnuqtz.fyfc8zlawk41$.dlg@40tude.net>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mailReferences:
<k08pk9$ebo$1@inews.gazeta.pl> <7rx079dw821n.1yql5mim1cbp.dlg@40tude.net> <k094d5$1nj$1@inews.gazeta.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail From: Łukasz 'Maly' Ostrowski <maly@USUNnemo.pl> Newsgroups: alt.pl.comp.lang.csharp Subject: Re: ListBox przewija się do góry przy zmianie zawartości. Date: Mon, 13 Aug 2012 00:37:18 +0200 Organization: Acme Lines: 69 Message-ID: <7co0bmdnuqtz.fyfc8zlawk41$.dlg@40tude.net> References: <k08pk9$ebo$1@inews.gazeta.pl> <7rx079dw821n.1yql5mim1cbp.dlg@40tude.net> <k094d5$1nj$1@inews.gazeta.pl> NNTP-Posting-Host: static-78-9-71-129.ssp.dialog.net.pl Mime-Version: 1.0 X-Trace: news.dialog.net.pl 1344811054 12962 78.9.71.129 (12 Aug 2012 22:37:34 GMT) X-Complaints-To: abuse@dialog.net.pl NNTP-Posting-Date: Sun, 12 Aug 2012 22:37:34 +0000 (UTC) User-Agent: 40tude_Dialog/2.0.15.1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit