0

我的 C# Visual Studio 解决方案中有两个项目:Main 和 Add。两个项目都使用不同的命名空间。假设:MainNameSpace 和 AddNameSpace。

在主项目中,我有一个表单,上面有一个 activex windows 媒体播放器组件。我有一个打开的对话框来打开视频,还有一个按钮来停止视频。这是停止视频的虚拟按钮。

    public void button2_Click(object sender, EventArgs e)
    {
        StopMovie();
    }

    public void StopMovie() 
    {
        axWindowsMediaPlayer1.Ctlcontrols.stop();
        MessageBox.Show("Video stoped!");  

    }

在我的添加项目中,我有想要远程调用 StopMovie() 函数的函数。所以我声明这样的事情:

void RemoteStop()
{
     MainNameSpace.Main ff = new MainNameSpace.Main();
     ff.StopMovie();
}

代码运行没有错误,但只执行 MessageBox(“视频停止!”),我的视频仍在继续运行。但是当我按下主要的停止按钮时,它会停止视频。我在这里想念什么吗?

谢谢。

更新:已解决

我通过表单访问(已经运行):

        FormName remotekill = (FormName)Application.OpenForms["FormName"];
        if (remotekill != null)
        {
            remotekill.StopMovie();                
        }
4

2 回答 2

4
MainNameSpace.Main ff = new MainNameSpace.Main();

正如它所暗示的那样,这条线将创建一个 Main对象(可能是您的表单)。因此,您实际上是在创建一个新表单并尝试在表单中停止视频。这显然不会影响在某处显示的现有表单以及视频正在播放的位置。

您必须以Main某种方式将现有的引用传递给您的Add组件才能使其工作。

于 2013-07-19T18:17:27.847 回答
0

您需要将 MainNameSpace.Main 实例传递给 Add 项目中的类。

于 2013-07-19T18:17:58.173 回答