Vykreslení borderu kolem PictureBoxu   zodpovězená otázka

VB.NET, WinForms

Zdravím, udělal jsem si jednoduchý panel, ve kterém mám nahoře umístěný picture box s obrázkem špendlíku, pomocí kterého mohu daný panel zafixovat (mělo by to fungovat stejně jako ve Visual Studiu).

Kromě toho chci také při najetí myši zobrazit kolem obrázku border, aby bylo vidět že to něco dělá. Myslel jsem si že to půjde takto:

    Private Sub PictureBoxPripinacek_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBoxPripinacek.MouseEnter
        PictureBoxPripinacek.BorderStyle = BorderStyle.Fixed3D
    End Sub


    Private Sub PictureBoxPripinacek_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBoxPripinacek.MouseLeave
        PictureBoxPripinacek.BorderStyle = BorderStyle.None
    End Sub

Bohužel to dělá problémy. Border se při najetí vždy správně zobrazí, ale při události MouseLeave ne vždycky rámeček zmizí (bohužel se mi nepodařilo vypátrat nějakou logickou příčinu nebo souvislost).

Přitom se obě události v pořádku spouštěji a pokud místo nastavování borderu měním třeba text v nějakém labelu tak je to vše ok. Napadlo mě že by se border nestihl vykreslit před spuštěním druhé události, ale to se mi zdá divné. Myslím si že to tak graficky náročné není.

Nevěděl by někdo jak zajistit správné vykreslování borderů?

Díky

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

Zkoušel jsem to a funguje mi to naprosto spolehlivě, ale napadá mne, že by možná pomohlo PictureBox po odjetí myši invalidatnout...

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

Tak jsem zkusil do kódu přidat invalidate které volám na picturebox ale bohužel bez výsledku. Pokud přes picturebox přejedu rychle tak to je většinou ok, problém nastane když myší jedu pomalu. Přitom když místo toho pictureboxu nastavuji bordery čemukoliv jinému (panelu, celému formuláři atd.) tak je vše bez problému...

Prozatím jsem šel cestou nejmenšího odporu a pod pictureBox jsem si dal panel a bordery místo na pictureboxu nastavuji na něm. Ale není to ideální, protože tohle jsou přesně ty věci které se nakumulují a dělají v projektu jen bordel...

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

V nejhorším případě by šlo okraj vykreslovat ručně v události Paint.

nahlásit spamnahlásit spam -1 / 1 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