首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

请大伙帮忙看看:重写属性后触发PropertyChanged无效的原因是什么

2013-10-30 
请大家帮忙看看:重写属性后触发PropertyChanged无效的原因是什么我使用下面的代码重写了TabControl类的Ite

请大家帮忙看看:重写属性后触发PropertyChanged无效的原因是什么
我使用下面的代码重写了TabControl类的ItemSize属性。重写后,选项卡的大小却不随该属性修改而改变,请高手看看,是哪里出错了?
Public Event PropertyChanged As PropertyChangedEventHandler _
Implements INotifyPropertyChanged.PropertyChanged

    Private TabSize As New Size

    Public Overloads Property ItemSize() As Size
        Get
            Return TabSize
        End Get
        Set(ByVal value As Size)
            TabSize = value
            If TabSize.Height > 1 And TabSize.Width > 0 Then
                originalItemSize = value
            End If
            RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs("ItemSize"))
        End Set
    End Property
[解决办法]
Overloads -> Overrides

另外你这么写当你使用ItemSize.Size.Height = xxx的时候,Set不会触发,调用的是Get。
你应该让Size只读,同时使用Height Width属性来操作。
[解决办法]
obj.ItemSize.Height = xxx
其实调用的是get
相当于
obj.Get_ItemSize().Height = xxx
或者说
Dim s As Size = obj.Get_ItemSize()
s.Height = xxx

而这么写才会调用set
obj.ItemSize = new Size(obj.ItemSize.Width, xxx)
它相当于
obj.Set_ItemSize(new Size(obj.ItemSize.Width, xxx))

热点排行