0

プログラムでコントロールを作成するウィンドウフォームがあります。後で、自分で実装したドラッグアンドドロップごとにコントロールを移動できるようにします。

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が起動していません)。また、コンテキストメニューは正しいものではありませんが、何も変更していないかのように見える標準的なものです..

これがなぜそうなのか、何か考えはありますか?

プロジェクト内の参照を削除して、再度追加しようとしました..

4

0 に答える 0