プログラムでコントロールを作成するウィンドウフォームがあります。後で、自分で実装したドラッグアンドドロップごとにコントロールを移動できるようにします。
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が起動していません)。また、コンテキストメニューは正しいものではありませんが、何も変更していないかのように見える標準的なものです..
これがなぜそうなのか、何か考えはありますか?
プロジェクト内の参照を削除して、再度追加しようとしました..