VB.Net - UserControl不会更新内部控件

时间:2015-03-30 15:46:21

标签: vb.net properties user-controls refresh

我正在研究VB.Net应用程序。我需要创建一个名为signalIO的UserControl,它带有TextBox和Label,有一些属性可以改变TextBox和Label的内容,更改BackColor等。

当我将signalIO添加到我的应用程序的窗体中时,signalIO控件正常工作。如果我将参数StatusSignal从False更改为True,我可以看到文本框的背景颜色变为控制从红色变为绿色,如果我更改了信号的名称,我可以看到标签中的文本已正确更改。

但如果我继续调试应用程序,我就看不到属性的Set方法之后的更改。

这是我用过的代码:

Imports System.ComponentModel
Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports System.ComponentModel.Design
Imports System.Windows.Forms

<Designer("System.Windows.Forms.Design.ParentControlDesigner,System.Design", GetType(IDesigner))> _
Public Class controlIO
    Inherits UserControl

    Private status As Boolean
    Private ID As Integer = 0
    Private label As String

    Public Property labelSignal As String
        Get
            Return labelIO.Text
        End Get
        Set(value As String)
            label = value
            labelIO.Text = label
            updateControl()
            Invalidate()
        End Set
    End Property

    Private Sub updateControl()
        Me.Refresh()
        boxIO.Refresh()
        labelIO.Refresh()
    End Sub

    Public Property statusSignal As Boolean
        Get
            Return status
        End Get
        Set(value As Boolean)
            status = value
            If status Then boxIO.BackColor = Color.Green Else boxIO.BackColor = Color.Red
            updateControl()
            Invalidate()
        End Set
    End Property

    Public Property signalIO As Integer
        Get
            Return ID
        End Get
        Set(value As Integer)
            ID = value
            boxIO.Text = CStr(ID)
            updateControl()
            Invalidate()
        End Set
    End Property

End Class

我无法理解为什么如果我更改属性statusSignal,例如,我可以看到boxIO的颜色更改为应用程序的FormDesigner,但在执行应用程序时没有更改。

我希望你能理解我的问题。

0 个答案:

没有答案