Užívateľský prvok   zodpovězená otázka

VB.NET, Komponenty, WinForms

Dobrý deň priatelia.

Dlho som už na tomto fóre nebol, pretože som sa niekoľko rokov venoval automatizácii v priemysle. Teraz však potrebujem vytvoriť niekoľko aplikácii vo VB.NET a tieto budem spájať s riadiacimi programami strojov. Všetko sa mi darí v pohode, ale za svet si už nedokážem poradiť s user controlom. Takže som znova (po 9 rokoch) na úrovni začiatočníka. Preto prosím o pomoc. Chcem vytvoriť prvok XStateLight (5 stavové svetlo). Použiť by som chcel picturebox a imagelist. V imageliste mám 5 obrázkov (každý reprezentuje nejaký stav zariadenia).Ako vstup chcem použiť vlastnosť ActualState (hodnota integer 0-4). To znamená, že ak hodnota ActualState bude 0, tak sa mi v pictureboxe zobrazí item 0 z imagelistu. No a tu končím. Návrh som si urobil, vlastnosť ActualState mám, ale neviem čo s tým ďalej. Ako by mal byť napísaný kód, ktorý pri zmene ActualState zmení obrázok v pictureboxe?

Public Class XStateLamp
    'PROPERTY ACTUAL STATE
    Private m_ActualState As Integer
    Public Property ActualState() As Integer
        Get
            Return m_ActualState
        End Get
        Set(ByVal value As Integer)
            m_ActualState = value
        End Set
    End Property
    Protected Overrides Sub OnCreateControl()
        MyBase.OnCreateControl()
        If Me.DesignMode Then
            m_ActualState = 0
            StatePicture.BackgroundImage = StatesList.Images.Item(0)
        End If
    End Sub
End Class

Ďakujem za akúkoľvek radu alebo návod.

Skúsil som to zatiaľ cez timer, ale to je tak nechutné, že to nechcem.

Private Sub TmrCheck_Tick(sender As Object, e As EventArgs) Handles TmrCheck.Tick
        Select Case m_ActualState
            Case 0 : Me.BackgroundImage = StatesList.Images.Item(0)
            Case 1 : Me.BackgroundImage = StatesList.Images.Item(1)
            Case 2 : Me.BackgroundImage = StatesList.Images.Item(2)
            Case 3 : Me.BackgroundImage = StatesList.Images.Item(3)
            Case 4 : Me.BackgroundImage = StatesList.Images.Item(4)
        End Select
    End Sub

Prosím len o radu, ako mám odchytiť, že sa vlastnosť ActualState zmenila.

Ďakujem.

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

Tak som to konečne pochopil. Veď je to jednoduché.

Public Property ActualState() As Integer
        Get
            Return m_ActualState
        End Get
        Set(ByVal value As Integer)
            If m_ActualState <> value Then
                m_ActualState = value
                Me.BackgroundImage = StatesList.Images.Item(value)
            End If
        End Set
    End Property
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