读书人

请大伙帮忙看看:重写属性后触发Prope

发布时间: 2013-10-30 12:56:21 作者: rapoo

请大家帮忙看看:重写属性后触发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))

读书人网 >VB Dotnet

热点推荐