- - PR -
VB6→VB.NETアップグレード対象について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-05-26 17:43
VB6のソースをVB.NETにアップグレードしたところ、
モジュール内で汎用名前空間を使用しているため、 アップグレード対象外になった箇所があります。 どうやらMicrosoft.VisualBasic.Compatibility系のものらしいのですが (ex. Microsoft.VisualBasic.Compatibility.VB6.GroupBoxArray)、 直接コントロールのidを使用して、例えば grpBoxArr.Count という使い方をしたり、 grpBoxArr(idx).Height = 100 などとしています。 過去のスレッドを読んで参考にし、idからコントロールを特定することはできても、 GroupBoxArrayにはCTypeで変換できなかったりするようです。 そもそもGroupBoxArrayがコントロール扱いでないのかもしれませんが、 フォーム上にありますし…。 このコントロールのプロパティにアクセスする方法があれば、お教えいただけたらと思います。 単純なことであるのに、煮詰まって見えてないだけかもしれませんが…。 ■こんな感じで使われています。 Public Sub SetArrayValue(ByRef crrForm As System.Windows.Forms.Form) With crrForm For idx = 0 To .grpBoxArr.Count - 1 With .grpBoxArr(idx) .Height = 100 End With Next idx End With End Sub [ メッセージ編集済み 編集者: ぎん 編集日時 2006-05-26 17:44 ] | ||||
|
投稿日時: 2006-05-26 18:00
crrForm に例えば GroupBoxHeight というプロパティを追加して それ経由で値を引き渡します。 | ||||
|
投稿日時: 2006-05-26 18:06
"何を" キャストしたいのですか? [*] の部分に "何を" が含まれていません。 説明だけを見ると、GroupBox を GroupBoxArray しているかのように読めてしまえるのですが... _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-05-29 11:55
回答ありがとうございます。 要は、そのメソッドでは、「そのフォームにgrpBoxArrというGroupBoxArrayがあったらHeightを指定しろ」ということをしていて、「そのフォーム」というようにフォームを特定していないので、grpBoxArrが見つからないという次第です。VB6だとこんなにアバウトでもOKだったんですね…。 やはりフォームを特定してから、処理させた方がいいでしょうかね…。 | ||||
|
投稿日時: 2006-05-29 12:06
回答ありがとうございます。 GroupBoxArrayを使ったことがなかったので、コントロールの一つのように感じ、 Control→GroupBoxArrayのキャストを無謀にもしようとしてみたわけです…。 確かにGroupBoxをGroupBoxArrayにしているのかもしれないですが、 GroupBox単体での存在がありませんので、GroupBoxArrayにインデックスを指定して アクセスしているんだと思います。それで、GroupBoxArrayにアクセスしたかったのですが、 ID”grpBoxArr”という名称が直接使用されていたので、恥ずかしながら混乱してしまったのです…。 | ||||
|
投稿日時: 2006-05-29 12:48
crrForm をキャストして使用したり特定のクラスの型としてもいいですが 僕の場合はインターフェイスとして定義します。 |
1