Tabcontrol - problikávání   otázka

C#

Dobrý den, dnes jsem narazil na nepříjemnou věc. Na formuláři mám Tabcontrol se 2 tabpages a připojeným image listem. Jakmile však zobrazuji u těchto tabpages v záhlaví obrázky (přes vlastnost ImageIndex)z image listu , při najetí myši mi začne tato komponenta problikávat. Co jsem googlil, tak někdo radí vytvořit nové vlákno, ale osobně bych byl raději, kdyby to šlo nějak jednodušeji. Děkuji za případné odpovědi.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Vytvářet nové vlákno je totální hovadina už z toho důvodu, že se musí kvůli synchronizaci kód manipulující s ovládacím prvkem spouštět z vlákna původního, jinak dojde k vyjímce.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Aha, děkuji za objasnění. Každopádně jsem ani neměl v úmyslu to řešit přes vlákna. Nějaký nápad čím by se to dalo obejít, nějaký "fígle" ?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zkoušel jsem stejnou věc udělat ve VB 9.0 (VS2008) a k žádnému takovému problému u mě nedochází. Použil jsem obrázky 32bitové hloubky a velikosti 16x16.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zajímavé, sice používám VS 2010, ale jak ve VB tak i v C#, ať zkouším různé velikosti obrázků včetně různých bitových hloubek, stále problikává. Napadlo mě, že by chyba mohla být na mém PC, ale co jsem vygooglil spusta lidí mají podobný problém, akorát většině z nich se to stává při resizování tabcontrolu, což já nedělám. Prostě najedu na kteroukoliv záložku a vidím jak probliknou. No nic, kdyby někoho něco napadlo, píchněte to sem nejen pro mne ale i pro ostatní, kteří by narazili na podobný problém. Díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Právě jsem si všimnul jedné věci. Záložky problikávají i pokud u nich nejsou obrázky a dokonce i v návrhovém režimu nejen v debugu. Zřejmě je náročné překreslování, což mi je divné, že by to páni z Microsoftu nevyladili ? PC je výkonnově, řekl bych, více než slušné nejen pro kancelářské potřeby (i5 3.3GHz, GTX 560 1GB), takže v PC dle mého chyba nebude.

PS: odzkoušeno i v Professional verzi, též problikává.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak jsem snad už vygooglil funkční řešení ! Nevím, zda je to optimální a zda neskrývá něco ošemetného, ale funguje. Tabcontrol již neproblikává.

        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams cp = base.CreateParams;
                cp.ExStyle |= 0x02000000;  // Turn on WS_EX_COMPOSITE
                return cp;
            }
        }

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Vzhledem k tomu, že se u mne problém nevyskytuje, tak nemůžu posoudit jeho závažnost, ale řešit takovéhle malichernosti bývá obvykle ztráta času. To jsou mnohem závažnější problémy, např. nefunkčnost ShowGroups.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback