【问题标题】:Making a panel draggable使面板可拖动
【发布时间】:2014-03-04 06:00:01
【问题描述】:

我正在创建一个“裁剪工具”,我需要制作一个包含 2 个可拖动按钮的面板。

直到现在我已经尝试过这样的事情,但是只有当我单击鼠标右键时才会发生更改位置事件......

this.MouseDown += new MouseEventHandler(onRightClickMouse);
private void onRightClickMouse(object sender, MouseEventArgs e)
{
      if (e.Button == MouseButtons.Right)
      {
            Point localMouseClickPoint = new Point(e.X, e.Y);
            panel1.Location = localMouseClickPoint;
      }
}

我的问题:如何使该面板在我的表单中可拖动?(我的意思是单击面板然后将其拖动到某个位置)。

【问题讨论】:

    标签: c# panel


    【解决方案1】:

    试试这样的:

    delegate void updatePanelCallback();
    panel1.MouseDown += new MouseEventHandler(onMouseDown);
    panel1.MouseUp += new MouseEventHandler(onMouseUp);
    System.Timers.Timer runTimer = new System.Timers.Timer(100);
    runTimer.Elapsed += new ElapsedEventHandler(onTimerElapsed);
    private void onMouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button != MouseButtons.Right)
        {
            return;
        }
        runTimer.Enabled = false;
    }
    private void onMouseUp(object sender, MouseEventArgs e)
    {
        runTimer.Enabled = false;
    }
    public void updatePanelLocation()
    {
        if (this.InvokeRequired)
        {
            this.Invoke(new updatePanelCallback(updatePanelLocation), new object[] {});
        }
        else
        {
            Cursor curs = new Cursor(Cursor.Current.Handle);
            panel1.Location = curs.Position;
        }
    }
    private void onTimerElapsed(object source, ElapsedEventArgs e)
    {
        updatePanelLocation();
    }
    

    【讨论】:

    • 我已经有了左键的功能...(选择要裁剪的区域)。
    • @user3281950 那么,你在问什么?好像你在问为什么它只适用于右键单击?
    • 不,我的意思是如何在鼠标后拖动面板...不要在发生右键单击时直接更改面板位置。
    • @user3281950 好了。
    • @user3281950 如果你觉得这有帮助,请accept the answer
    【解决方案2】:

    您可以分两步尝试,在 MouseDown 事件上准备操作并在 MouseUp 上完成操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-08
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      • 2012-07-16
      • 2016-03-17
      • 2017-12-15
      • 2016-04-28
      相关资源
      最近更新 更多