2009-06-23 13 views
0

VBScriptを使用して拡張可能なアプリケーションで作業しています。私はVB6フォームにアクセスでき、コントロールを追加したり、フォーム上に他のコントロールを参照することができます。私はinterop経由で.Netフォームを起動することもできます。.Netコントロールをvb6アプリケーションに動的に追加する方法

.NETコンポーネントへの参照を作成し、VB6フレームまたはSSTabへの参照を渡してから、コンポーネントに相互運用ユーザーコントロールを作成してフレームに配置させることができます。/SSTab。私はこれを行うには、単にVBScriptを使用している場合、私は、次のような何か:

set frame = Form.Controls("Frame1") 
set cmd1 = Form.Controls.Add("vb.commandbutton", "Cmd1") 
cmd1.Container = frame 
cmd1.Visible = true 

を私はInteropUserControlに似た何かを行うことができると期待。 InteropユーザーコントロールにはContainerというプロパティがありますが、それは読み取り専用なので、親コンテナにコントロールを取得する方法がわかりません。

アドバイスをいただければ幸いです。敬具

シェーンホルダーまあ

+1

これは、cmd1.Container =フレームのSetステートメントではないはずです。 Set cmd1.Container = frame – MarkJ

答えて

0

あなたが動的にコントロールを追加する方法を知りたい場合は、それは非常に簡単です:

Form.Controls.Add(new MyControl()) 

あなたが親に制御を取得したい場合コンテナ、それはそれを行う方法になります。その場で親コントロールを変更できないように見えるので、子コントロールを追加するif/elseロジックを使用して決定する必要があります。例擬似コード:

InterOpControl myControl = new InterOpControl(); 

if (someVariable) { 
    Form1.Controls.Add(myControl); 
} 
else { 
    Form2.Controls.Add(myControl); 
} 

あなたがこれを行うことができない場合は、行うことができます。

if (someVariable) { 
    Form1.Controls.Add(new InterOpControl()); 
} 
else { 
    Form2.Controls.Add(new InterOpControl()); 
} 

今、あなたはそれへの参照を持っていないが、あなたは、単に、後でそれを取得することができます。

+0

これはフォームに追加しますが、コントロールを表示する特定のコンテナには追加しません。 SSTabには、他のコントロールを追加するための.Controlsはありません。 フレームには.Controlsがありますが、Spy ++がThunderRT6Frameであると報告し、Interopクラスを生成する方法がわからないため、Interopに現在問題があります。 – ShaneH

関連する問題