3

現在、WPFフォーム内にSWFファイルを埋め込む必要があります。私はそれについて読みました、そしてこれを達成するために少なくとも2つの方法があります:

  • SWFをHTMLファイルに埋め込み、後者を私のフォームに埋め込みます。
  • 「AxShockwaveFlashObjects」アセンブリを使用したSWFの埋め込み。これはWPFではなくWinFormsで使用することを目的としているため、Windowsフォームホストを使用して、ShockwaveFlashオブジェクトをその中に配置する必要があります。

私のアプリケーションの要件のいくつか(基本的にはshockwaveオブジェクトの「GetVariable」関数)のために、2番目のオプションを選択しました。WindowsフォームホストをWPFフォームに配置し、そのコンストラクターに次のコードを配置します。

    public MainWindow()
    {
        InitializeComponent();

        AxShockwaveFlash flash = new AxShockwaveFlash();

        flash.Location = new System.Drawing.Point(0, 0);
        flash.Size = new System.Drawing.Size(200, 200);
        flash.Enabled = true;
        flash.Movie = "http://www.example.com/file.swf";

        windowsFormsHost1.Child = flash;
    }

しかし、コードをデバッグすると、起動時に次のエラーが発生します。

'指定されたバインディング制約に一致するタイプ'Flash_in_WPF.MainWindow'でのコンストラクターの呼び出しは、例外をスローしました。行番号「4」および行位置「106」。

ボタンがクリックされたときに実行するようにそのコードを移動すると、別のエラーメッセージが表示されます。

タイプ'System.Windows.Forms.AxHost+InvalidActiveXStateException'の例外がスローされました。

なぜこれらのエラーが発生するのですか?

編集:それを解決しました!初期化コード全体を、コンストラクターではなく「Grid_Loaded」イベントに移動する必要があることがわかりました。

前もって感謝します

4

1 に答える 1

1

解決しました!質問を解決済みとして設定する必要があると考えました。

初期化コード全体を、コンストラクターではなく「Grid_Loaded」イベントに移動する必要があることがわかりました。

于 2013-10-06T04:27:52.803 に答える