C# 向axWindowsMediaplayer添加事件侦听器
我有一个windows窗体,可以通过编程方式创建控件。。之后,我允许它们在我自己实现的每次拖放中移动: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
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()