我在C#visual studio解决方案中有两个项目:Main和Add。两个项目都使用不同的名称让我们说:MainNameSpace和AddNameSpace。
在Main项目中,我有一个表单上有一个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(“Video Stoped!”),我的视频仍在继续运行。但是当我按下主要停止按钮时它会停止视频。 我在这里想念一下吗?
感谢。
更新:已解决
我通过表单(已经运行)访问:
FormName remotekill = (FormName)Application.OpenForms["FormName"];
if (remotekill != null)
{
remotekill.StopMovie();
}
答案 0 :(得分:4)
MainNameSpace.Main ff = new MainNameSpace.Main();
根据建议,这一行会创建一个新 Main
对象(可能是您的表单)。因此,您实际上是在创建一个新表单并尝试在 表单中停止视频。这显然不会影响正在某处播放视频的现有表格。
您必须以某种方式将现有Main
的引用传递给您的Add
组件才能使其正常工作。
答案 1 :(得分:0)
您需要将MainNameSpace.Main实例传递给Add项目中的类。