私はC#Winforms-Applicationを持っています。私はプロジェクトの出力タイプを 'クラスライブラリ'に設定し、ExcelでVBAコードで参照できるようにCOMを表示させました。したがって、私はWinForms-AppをExcelから起動することができます。C#WinFormsを閉じるときにExcelが突然終了するDLLで呼び出されたアプリケーション
すべては、これまで正常に動作します。私のVBAのコードでは、私は(マクロ)は、このようなアプリケーションを呼んでいる:私は私のマクロのWinFormsウィンドウを起動すると
public int Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
return 0;
}
:私のC#-codeで
Dim app As MyWinFormsApp.Program
Set app = New MyWinFormsApp.Program
Dim result As Integer
result = app.Main()
私のプログラムのクラスは、このようになりますプログラムが正常に動作します。
私の問題は、次のとおりです。私は赤いXをクリックすることで、WinFormsのウィンドウを閉じていた場合、Excelがまた突然終了します。私はすでに出て見つけた何
は次のとおりです。私のC#クラスForm1.Designer.csで
私はこの廃棄-方法があります。
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
私は)(base.Disposeを呼び出すとき - 私は、WinFormsのウィンドウを閉じたときにメソッド
base.Dispose(false);
「false」に渡すExcelが予期せず終了されていないが、私はその後Excelを閉じたいとき、それは不可能です。私はこの「Mouse-Wait-Symbol」を手に入れ、何もできないので、TaskManagerのExcelプロセスを強制終了する必要があります。
(私も本当に私の元のプロジェクトで、私は何か間違ったことをやっていることを提供するために、何もしない新しいWinFormsの-プロジェクトを使用してみました...私はまったく同じ動作を持っていた。)
だから私の質問は:どのように私は私のWinForms - アプリケーションを閉じることができ、その後、通常の方法でExcelを閉じて知っていますか?
はどうもありがとうございました!
わかりません。私は単純にapp.Main()メソッドを呼び出す前に、VBAコードにApplication.UserControl = Trueを設定します。同じ結果を得ました.. Excelが予期せず終了しました... – toniweser
私は今テストすることができませんが、私はVBAコードの代わりにMain()メソッドを設定すると言っていました。たぶん、プログラムは、idkを実行するときにそれを変更しています... – Magnetron