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.
|