0

既存のvb6プログラムを強化しながら、移行に対するさらなる障壁の構築を回避する目的で。それらを使用せずにvb6のコントロール配列と同じ機能を実現する方法はありますか?

4

3 に答える 3

1

.NET には、タグ プロパティがあります。複数のコントロールによって発生したイベントを同じデリゲートで処理することもできます。新しいコントロールの Tag プロパティを Index に設定します。

Private Sub MyButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click,Button2.Click

        Dim Btn As Button = CType(sender, Button)
        Dim Index As Integer = CType(Btn.Tag, Integer)
' Do whatever you were doing in VB6 with the Index property

End Sub

作業の一部を自動化する VB6.Compatibility の BaseControlArray から継承するクラスも確認する必要があります。タグを使用すると、コントロール名に依存するよりも、変換プロセスでエラーが発生しにくくなります。ただし、これを絶対に感謝しないでください。コントロール名のアプローチが最適か、インデックスとしてのタグのアプローチかを決定する必要があります。

どちらの場合でも、.NET を簡単にセットアップして、複数のコントロールによって発生したイベントを 1 つのハンドラーに集めることができます。

于 2008-10-10T14:00:02.157 に答える
0

コードで独自のコントロールの配列をいつでも作成できます :) ただし、コレクションまたはディクショナリ オブジェクトの方が適切なコンテナーである可能性があります。やりたいことによっては、カスタム コレクション クラスを使用してコントロールのラッパー クラスを作成することもできますが、オブジェクト モデルの作成は .NET でジェネリックを使用する方がはるかに優れているため、現時点では VB6 でシンプルにしておくのが最善の方法です。 .

VBA ユーザーフォームではコントロール配列がサポートされていないため、Google で VBA、ユーザーフォーム、Excel などでコントロール配列を模倣する方法を提案してください。

ところで、制御配列を VB6 から VB.NET に移行しようとしましたか? 単なる推測ですが、VB で一般的に使用されていることを考えると、非常にうまく処理されていると思います。

于 2008-10-10T07:43:26.360 に答える
0

ここ数日、ちょっとした読書と実験を行いましたが、vb6 では、コントロール配列が行うことを実行できる方法は他にないようです。実行時に作成するコントロールの数が設計時に既にわかっている場合は、「イベントを使用して」プライベート コントロール オブジェクト変数を宣言し、これらを実行時に動的にインスタンス化できます。さらに作成する必要がある場合は作成できますが、これらにはイベントに応答して起動するコードがありません。私が見る限り、これが問題の核心です。vb6 で動的に作成されたコントロールのイベントにコードを動的に関連付ける方法はありません。

于 2008-10-12T20:06:03.180 に答える