Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 向axWindowsMediaplayer添加事件侦听器_C#_Winforms_Wpf Controls_Gdi+_Axwindowsmediaplayer - Fatal编程技术网

C# 向axWindowsMediaplayer添加事件侦听器

C# 向axWindowsMediaplayer添加事件侦听器,c#,winforms,wpf-controls,gdi+,axwindowsmediaplayer,C#,Winforms,Wpf Controls,Gdi+,Axwindowsmediaplayer,我有一个windows窗体,可以通过编程方式创建控件。。之后,我允许它们在我自己实现的每次拖放中移动: private void valueToolStripMenuItem_Click(object sender, EventArgs e) { Label label = new Label(); label.Text = "Label"; label.AutoSize = true; label.Location

我有一个windows窗体,可以通过编程方式创建控件。。之后,我允许它们在我自己实现的每次拖放中移动:

private void valueToolStripMenuItem_Click(object sender, EventArgs e)
        {
        Label label = new Label();
        label.Text = "Label";
        label.AutoSize = true;
        label.Location = PointToClient(MousePosition);
        label.MouseDown += new MouseEventHandler(this.dyncontrol_MouseDown);
        label.MouseMove += new MouseEventHandler(this.dyncontrol_MouseMove);
        label.MouseUp += new MouseEventHandler(this.dyncontrol_MouseUp);
        label.ContextMenuStrip = valueContextMenu;
        this.Controls.Add(label);
        }
结合这些功能:

private void dyncontrol_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == System.Windows.Forms.MouseButtons.Left)
        {
            Control control = (Control)sender;
            selected = true;
            offset.X = PointToClient(MousePosition).X - control.Location.X;
            offset.Y = PointToClient(MousePosition).Y - control.Location.Y;
        }
    }
private void dyncontrol_MouseMove(object sender, MouseEventArgs e)
    {
        if (selected)
        {
            Control control = (Control)sender;
            Point newLocation = new Point(PointToClient(MousePosition).X - offset.X, PointToClient(MousePosition).Y - offset.Y);
            control.Location = newLocation;
        }
    }
private void dyncontrol_MouseUp(object sender, MouseEventArgs e)
    {
        selected = false;
        if (e.Button == System.Windows.Forms.MouseButtons.Left)
        {
            Control control = (Control)sender;
            Point newLocation = new Point(PointToClient(MousePosition).X - offset.X, PointToClient(MousePosition).Y - offset.Y);
            control.Location = newLocation;
        }
    }
这适用于图片框、标签、按钮等。。 现在,我想添加一个axWindowsMediaplayer并执行相同的操作:

private void videoStreamToolStripMenuItem_Click(object sender, EventArgs e)
    {
        AxWMPLib.AxWindowsMediaPlayer wmp = new AxWMPLib.AxWindowsMediaPlayer();
        wmp.Size = new Size(300, 300);
        wmp.ContextMenuStrip = valueContextMenu;
        wmp.MouseDown += new MouseEventHandler(this.dyncontrol_MouseDown);
        wmp.MouseMove += new MouseEventHandler(this.dyncontrol_MouseMove);
        wmp.MouseUp += new MouseEventHandler(this.ddyncontrol_MouseUp);
        this.Controls.Add(wmp);
        wmp.uiMode = "none";
        wmp.Ctlenabled = false;
        wmp.URL = "C:\\Users\\Public\\Videos\\Sample Videos\\Wildlife.wmv";
    }
但是我不能拖动玩家(MouseDown和MouseUp没有开火),而且contextmenu不是正确的,而是一个标准的东西,看起来好像我没有改变任何东西

你知道为什么会这样吗


我已尝试删除项目中的引用并再次添加它

错误的事件。WMP公开它自己的,它们被命名为MouseDownEvent、MouseMoveEvent和MouseUpEvent。顺便说一句,当你使用designer时很容易发现。这解释了MouseDown没有被触发的原因。。我现在尝试这样做:wmp.MouseDownEvent+=new-AxWMPLib.\u WMPOCXEvents\u MouseDownEventHandler(this.dynControl\u MouseDown);但是如果编译器不接受它,那么您还必须更改事件处理程序方法签名,第二个参数是AxWMPLib.\u WMPOCXEvents\u MouseMoveEvent。就像我说的,先和设计师一起做,这样这些事情就显而易见了。好的,谢谢!和设计师一起想出来的。。但是,当我在设计器中分配Contextmenustrip时,它也不会更改它?WMP有自己的上下文菜单,您通过设置CTLEABLED=false将其禁用。改为使用MouseDownEvent,测试e.nButton==2并调用ContextMenuStrip.Show()