1

フォームにショックWaveオブジェクトが含まれています。キーを押してファイルを再生した後、または途中で別のフォームが表示されます。イベントを使用する必要がありますか。 私はそれに答える人に本当に感謝しています。 ここでコード:

private void Form1_Load(オブジェクト送信者、EventArgs e)         {

        axShockwaveFlash1.Movie = "c:/intro.swf";
        axShockwaveFlash1.Forward();
        axShockwaveFlash1.Play();
        Form2 form2 = new Form2();
        form2.Show();
    }

そしてform2では:

private void Form2_Load(オブジェクト送信者、EventArgs e)         {

        Form1 form1 = new Form1();
        form1.Close();
     }

デバッグすると両方が表示されますが、form2が欲しいだけです。


  • SWFをどのようにプレイしていますか? (どのオブジェクト/コントロールを使用していますか?) - Evan Mulawski
  • もしaxShowckwaveFlash1のイベントがありますCompletedまたはFinsihed、それを購読し、それが完了したら新しいフォームを表示します。 - Nate
  • 私はそれがそのようなイベントを持っているとは思わない! - shiny

2 답변


1

あなたは渡すことができますForm1のインスタンスForm2次のように、コンストラクタを閉じて閉じます。

public Form2(Form1 form1)
{
    InitializeComponents();

    form1.Hide();//hide the control from the user, or close it if it not the main form..
}

またはあなたがそれを閉じるようにしたい場合form1ボタンがクリックされたときのインスタンス

private Form1 _form1 = null;
public Form2(Form1 form1)
{
    InitializeComponents();

    _form1 = form1;
}

private void button1_Click(object sender, EventArgs e)
{
    if (_form1 != null)
    {
        _form1.Hide();
    }
}

form2をform1で初期化します。

axShockwaveFlash1.Movie = "c:/intro.swf";
axShockwaveFlash1.Forward();
axShockwaveFlash1.Play();
Form2 form2 = new Form2(this);//"this here is the form1 instance itself"
form2.Show();


  • Jalalに感謝します。私はこの方法を使っていますが、form2を閉じてもプログラムが進行中で、デバッグが止まらないのはなぜですか? - shiny
  • あなたが意図のようにform1を閉じなかったので、私たちがそれを隠すのを覚えていてください。だからform2を処理するClosingイベントを処理し、form1インスタンスも閉じます。 - Jalal Said
  • 私はそれをしましたが、変化はありません! - shiny
  • プライベートvoid Form2 FormClosing(オブジェクト送信側、FormClosingEventArgs e){Form1 form1 = new Form1(); form1.Close(); } - shiny
  • いいえ、ここで新しいを作成していますForm1そしてそれを閉じます。他の解決策を使用する必要があります。private Form1 _form1 = null; public Form2(Form1 form1){InitializeComponents(); _form1 = form1; Form2_FormClosing(オブジェクト送信側、FormClosingEventArgs e){_form1.Close();} } - Jalal Said

0

映画を再生しているかどうかを確認するためにタイマーを使用することもできます。そうでない場合は、form2という新しいフォームを開きます。

 private void flash_Load(object sender, EventArgs e)
    {
        axShockwaveFlash1.Movie = @"C:\Users\Adil M\Documents\Visual Studio 2012\Projects\TProject\a.swf";
        int a = axShockwaveFlash1.MovieData.Length;
        timer1.Start();
    }

今すぐタイマーイベントのコード

 private void timer1_Tick(object sender, EventArgs e)
    {
        if (!axShockwaveFlash1.IsPlaying())
        {
            Fome2 fobj = new Form2();
            this.Hide();
            timer1.stop();

            fobj.show();

        }
        else if(axShockwaveFlash1.IsPlaying())
        {
        }
    }

このコードは、ムービーが完成したとき、またはタイマーで実行できる任意のキーに対してのみ機能します。 ありがとう

関連する質問

最近の質問