- - PR -
dllから作成された継承フォームについて
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-03-15 20:44
VB.NETで開発中の初心者です。
継承元のフォームにタイトル表示用のラベルを作成し、 継承先のフォームで以下のようにタイトルを設定したいのですが・・・ lblTitle.Text = "○○マスタメンテナンス" 継承元フォームがプロジェクト内に存在する場合、設定できることは確認できましたが dll参照にて作成された継承先フォームで設定しようとすると、以下のメッセージが 表示され設定できません。 メッセージ: 'xxx.xxx.Private Dim WithEvents lblTitle As System.Windows.Forms.Label' は 'Private' であるため、このコンテキストではアクセスできません。 Publicでないためアクセスできないのはわかりますが dll参照にて、プロパティを設定可能にする方法がありましたら教えてください。 よろしくお願いします。 | ||||
|
投稿日時: 2005-03-15 20:53
プロパティでアクセスできるように継承フォーム側に書くのはダメですか?
Public Property Hoge() As Integer Get Return intHoge End Get Set(ByVal Value As Integer) intHoge = Value End Set End Property | ||||
|
投稿日時: 2005-03-15 21:05
早速の回答ありがとうございます。
>プロパティでアクセスできるように継承フォーム側に書くのはダメですか? 設定したい項目が1つでなく複数り、継承フォームも40画面以上存在する為 全てに記述するとなると作業工数大となり、それならdll参照はやめようか と思います。 やはり難しいのですかねえ? | ||||
|
投稿日時: 2005-03-15 21:56
こんにちは、じゃんぬねっと です。
そもそも、フォーム内の子コントロールの継承はお勧めできませんね... 動的に作成できるように、基底フォームで何かしろ細工をした方が良いんじゃないですか? Public なメソッドを通して。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2005-03-16 11:59
継承元のフォームのlblTitleのModifiersプロパティはどうなっていますか?
普通に貼り付けるとFriendになるため、同じプロジェクト内からしかアクセスできません。 Protected(またはProtected Friend)にすれば、継承先のフォームからもアクセスできます。 なお、継承元フォームがDLL内にあるか、同じプロジェクト内にあるかの違いは、 Friendアクセスの可否以外はありません。 [ メッセージ編集済み 編集者: kanai 編集日時 2005-03-16 12:01 ] | ||||
|
投稿日時: 2005-03-16 16:27
回答ありがとうございます。
継承元フォームのlblTitleのModifiersプロパティがFriendだったので Protectedに変更することでDLL内からでもアクセスできました。 ただ同じプロジェクト内の継承元フォームのlblTitleのModifiersプロパティがFriend だったのですが継承先フォームでアクセスできました。ちょっと気になります。 とりあえずこれで作業できます。 ありがとうございました。 | ||||
|
投稿日時: 2005-03-19 03:10
同じプロジェクトということは、同じアセンブリ(exeまたはdll)ですよね? 同じアセンブリ内であればFriend指定のものにアクセスできます。 | ||||
|
投稿日時: 2005-03-19 09:41
ご回答ありがとうございます。
>同じアセンブリ内であればFriend指定のものにアクセスできます。 そうですね。同じdll内ってことになりますね。 よく考えれば当たり前のことでした。 まだまだかなり勉強が必要かなと思います。 |