やりたいことには届いてないと思います。
やりたいことは、
「デザイナーのPropertyGridの(Name)の項目を変更したときTagの項目の値も変化させたい」
だと思います。
とりあえず、コントロールのNameプロパティを
VB.NET
1 <RefreshProperties(RefreshProperties.Repaint)>
2 Public Shadows Property Name As String
3 Get
4 Return MyBase.Name
5 End Get
6 Set(value As String)
7 MyBase.Name = value
8
9 Me.Tag = value
10
11 End Set
12 End Property
と変更してみました。
ですが、(Name)の項目を変更してもデザイナーのPropertyGridのTagの欄は変化しません。
実行してコード上で確認するとTagプロパティは変化しています。
ここからは私の想像です。
(Name)の値はデザイナーではNameプロパティにはSetせず、Designer.vbのコードを変更するのみなのではないか。
Designer.vbには
VB.NET
1Me.UserControl1.Name = "UserControl1"
とあるので、実行時にはNameプロパティにSetされるので、意図した動作になる
VB.NET
1 <RefreshProperties(RefreshProperties.Repaint)>
2 Public Property Test As String
3 Get
4 Return Me.Tag
5 End Get
6 Set(value As String)
7 Me.Tag = value
8 End Set
9 End Property
と、テスト用のプロパティを実装したときは、デザイナーのPropertyGridは変化しましたので、デザイン時にはNameプロパティ部分のコードは動いていないのではないかということです。
(Name)はデザイナーでの識別名を示すものでNameプロパティとは違うので仕方ないのかもしれません。
肝心の(Name)を変更されたときの動作でTagプロパティを変更できるかですが、私には分かりません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/23 23:50