tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^2: 初めまして
投稿日: 2006/11/09(Thu) 09:28
投稿者プログラム勉強中

回答ありがとうございます。

> >     Public Sub setCtrl(ByRef Form As ※この部分が分かりません)
> As Form でしょうね。各フォームは、すべて Form クラスを継承(Inherits)していますから。
> (名前空間を省略せずに書くなら、As System.Windows.Forms.Form で)

引数をFormにしてしまうと、
AddHandler ctrl.GotFocus, AddressOf Form.UserControlGotFocus
でUserControlGotFocusがメンバーではありません。とエラーになってしまいます。

> なお、この場合は Test1〜Test4だけでなく、すべての種類のFormクラスが処理対象となります。
> もし、Test1〜Test4に限定したいのであれば、それらに共通の Interface を用意するか、
> あるいは、Test1〜Test4それぞれのオーバーロードメソッドを用意してみてください。

今回はこの共通関数をライブラリにして色々なプロジェクトから呼べたらと思っています。
なのでTest1〜Test4に限定しなくても良いのですが、やはりこの書き方では無理なような気がします・・・。

質問ばかりで恐縮ですが、引数で AddressOf 〜 の〜の部分を引き渡すのは可能でしょうか?
たとえば

Public Sub setCtrl(ByRef Form As System.Windows.Forms.Form,Byval Address as ※不明)
      Dim ctrl as Control
      For Each ctrl In Form.Controls
          AddHandler ctrl.GotFocus AddressOf Address
      Next
End sub

のようにできたらいいのですが。

> >     Public Sub setCtrl(ByRef Form As Sample.Test1)
> ここは ByRef ではなく、ByVal にすべきかと。

そのとおりですね!Byvalに変更します。ご指摘ありがとうございます。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。