2016-12-01 20 views
-1

VBScriptを使用して表示/呼び出すためのDLLに単純なFormを作成しました。vbscriptのDLLからWinForm(C#)を表示

namespace Playground_DLL 
{ 

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     this.DialogResult = System.Windows.Forms.DialogResult.OK; 
    } 

    public void ShowForm() 
    { 
     this.Show(); 
    } 

    [ComVisible(true)] 
    public void Hello() 
    { 
     MessageBox.Show("Hello"); 
     Application.Run(this); 

    } 
} 

ボタンをクリックした後、このフォームのDialogResultを受け取ろうとしています。 しかし、私はFormを可視にするのに苦労しています。 DLLが登録され、フォームはvbscript内から作成できます。 しかし、form.ShowDialog()メソッドを呼び出した後、スクリプトは停止します(またはダイアログが閉じるのを待っています)が、フォームは表示されません。

(実験的な)Hello()関数を呼び出す場合のみ、フォームが表示されます。 (ただし、application.runを呼び出す前にメッセージボックスを表示している場合のみ)。

私は何が間違っているのか、間違っていますか?

ここに私のvbscriptスニペットがあります。

(全体のスクリプトと、フォームが実際に何かをしていない。それはちょうど新しい概念を理解/学ぶことです)

Dim test 
Set test = CreateObject("Playground_DLL.Form1") 
test.topMost = True 
test.Hello() 
Msgbox(test.DialogResult) 


Dim test 
Set test = CreateObject("Playground_DLL.Form1") 
test.topMost = True 
Dim result 
result = test.ShowDialog() 
Msgbox(result) 
+0

VB ScriptからC#DLLを呼び出す方法について簡単なGoogle検索を行います。 – MethodMan

+0

問題はDLLを呼び出さないことです。それは働いています..それは現れないフォームです。 – Knoffel

+0

[C#でGUIを作成し、VBScriptで呼び出す]の複製があります。(http://stackoverflow.com/questions/10943253/create-gui-in-c-sharp-and-call-in-vbscript) – Lankymart

答えて

-1

あなたは、ウィンドウを初期化し、それを表示しません。あなたのシーケンシングと構文はオフになっています...

public void ShowForm() 
{ 
    this.Show(); 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    Hello();  //Display your MessageBox based on the button click 
    this.DialogResult = System.Windows.Forms.DialogResult.OK; 
} 

public void Hello() 
{ 
    MessageBox.Show("Hello"); 
} 

Dim test 
Set test = CreateObject("Playground_DLL.Form1")  //This is where you initialize 
test.topMost = true 
//test.Hello()          //This is to display the message box - not Form1 
test.ShowForm();         //This displays Form1 
+1

よく電話します。 ShowDialog()はフォームを表示する必要があります。しかし、何も起こりません。こんにちは()とShowForm()はテスト目的のためだけに無視してください。 ShowDialog/Showは、初期化後にフォームを表示するための「組み込みの」フォーム関数です。しかし、それは目に見えません。 – Knoffel

+0

'test.Visibile = true;' –

+0

を試して、ShowDialog()を呼び出す際にフォームが既に表示されているとエラーが発生しました。 – Knoffel

関連する問題