如何在c#中播放swf文件后显示另一个表单


how to show another form after playing swf file in c#

我有一个包含冲击波闪光物体的表单。我想播放完文件后或按一个键在文件中间显示另一个表单。我该怎么做?我应该使用活动吗?我真的很感激有人回答。代码如下:

private void form1_load(对象发送方,事件参数e){

1
2
3
4
5
6
        axShockwaveFlash1.Movie ="c:/intro.swf";
        axShockwaveFlash1.Forward();
        axShockwaveFlash1.Play();
        Form2 form2 = new Form2();
        form2.Show();
    }

在表格2中:

private void form2_load(对象发送方,事件参数e){

1
2
3
        Form1 form1 = new Form1();
        form1.Close();
     }

当我调试它时,两个都显示出来了,但我只需要表单2


您可以将Form1实例传递给Form2构造函数,然后关闭它,如下所示:

1
2
3
4
5
6
public Form2(Form1 form1)
{
    InitializeComponents();

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

或者,如果希望它在单击按钮时关闭Form1实例,则:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private Form1 _form1 = null;
public Form2(Form1 form1)
{
    InitializeComponents();

    _form1 = form1;
}

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

初始化Form1中的Form2:

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


您还可以使用计时器检查电影是否正在播放,如果没有,则打开新的窗体,即窗体2。

1
2
3
4
5
6
 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();
    }

现在对计时器事件进行编码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 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())
        {
        }
    }

此代码仅在您的电影完成时才对您有效,或者对于任何键,您也可以在计时器中执行此操作。桑克斯