- PR -

dllから作成された継承フォームについて

投稿者投稿内容
mkon2001
会議室デビュー日: 2004/07/05
投稿数: 16
投稿日時: 2005-03-15 20:44
VB.NETで開発中の初心者です。
継承元のフォームにタイトル表示用のラベルを作成し、
継承先のフォームで以下のようにタイトルを設定したいのですが・・・

  lblTitle.Text = "○○マスタメンテナンス"

継承元フォームがプロジェクト内に存在する場合、設定できることは確認できましたが
dll参照にて作成された継承先フォームで設定しようとすると、以下のメッセージが
表示され設定できません。

 メッセージ:
 'xxx.xxx.Private Dim WithEvents lblTitle As System.Windows.Forms.Label'
 は 'Private' であるため、このコンテキストではアクセスできません。

Publicでないためアクセスできないのはわかりますが
dll参照にて、プロパティを設定可能にする方法がありましたら教えてください。
よろしくお願いします。
Mecky
会議室デビュー日: 2005/03/07
投稿数: 9
投稿日時: 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
mkon2001
会議室デビュー日: 2004/07/05
投稿数: 16
投稿日時: 2005-03-15 21:05
早速の回答ありがとうございます。

>プロパティでアクセスできるように継承フォーム側に書くのはダメですか?
設定したい項目が1つでなく複数り、継承フォームも40画面以上存在する為
全てに記述するとなると作業工数大となり、それならdll参照はやめようか
と思います。
やはり難しいのですかねえ?

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-03-15 21:56
こんにちは、じゃんぬねっと です。

そもそも、フォーム内の子コントロールの継承はお勧めできませんね...
動的に作成できるように、基底フォームで何かしろ細工をした方が良いんじゃないですか?
Public なメソッドを通して。
_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
kanai
ベテラン
会議室デビュー日: 2004/09/13
投稿数: 98
投稿日時: 2005-03-16 11:59
継承元のフォームのlblTitleのModifiersプロパティはどうなっていますか?

普通に貼り付けるとFriendになるため、同じプロジェクト内からしかアクセスできません。

Protected(またはProtected Friend)にすれば、継承先のフォームからもアクセスできます。

なお、継承元フォームがDLL内にあるか、同じプロジェクト内にあるかの違いは、
Friendアクセスの可否以外はありません。

[ メッセージ編集済み 編集者: kanai 編集日時 2005-03-16 12:01 ]
mkon2001
会議室デビュー日: 2004/07/05
投稿数: 16
投稿日時: 2005-03-16 16:27
回答ありがとうございます。
継承元フォームのlblTitleのModifiersプロパティがFriendだったので
Protectedに変更することでDLL内からでもアクセスできました。

ただ同じプロジェクト内の継承元フォームのlblTitleのModifiersプロパティがFriend
だったのですが継承先フォームでアクセスできました。ちょっと気になります。

とりあえずこれで作業できます。
ありがとうございました。
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2005-03-19 03:10
引用:

mkon2001さんの書き込み (2005-03-16 16:27) より:
ただ同じプロジェクト内の継承元フォームのlblTitleのModifiersプロパティがFriend
だったのですが継承先フォームでアクセスできました。ちょっと気になります。



同じプロジェクトということは、同じアセンブリ(exeまたはdll)ですよね?
同じアセンブリ内であればFriend指定のものにアクセスできます。
mkon2001
会議室デビュー日: 2004/07/05
投稿数: 16
投稿日時: 2005-03-19 09:41
ご回答ありがとうございます。

>同じアセンブリ内であればFriend指定のものにアクセスできます。

そうですね。同じdll内ってことになりますね。
よく考えれば当たり前のことでした。
まだまだかなり勉強が必要かなと思います。

スキルアップ/キャリアアップ(JOB@IT)