【问题标题】:How to preserve button-click functionality when dragging & dropping?拖放时如何保留按钮单击功能?
【发布时间】:2021-03-18 20:30:12
【问题描述】:

我有一个 FlowLayoutPanel,里面有几个按钮,单击它们会启动程序。我希望能够重新排列此 FlowLayoutPanel 中的按钮,因此我尝试为按钮实现拖放功能。

我在运行时使用以下代码将按钮添加到 FlowLayoutPanel:

button.Click += delegate ( object sender, EventArgs e ) {
   Process.Start( someExePath );
};

button.MouseDown += delegate ( object sender, MouseEventArgs e ) {
   button.DoDragDrop( button, DragDropEffects.Move );
};

将 MouseDown 委托添加到按钮后,我无法再按下按钮来启动应用程序,而是开始拖放。我如何解决它? 我的主要目标是能够重新排列 FlowLayoutPanel 内的按钮(最好通过拖放操作),同时仍然能够通过单击这些按钮来启动应用程序。

【问题讨论】:

    标签: c# winforms drag-and-drop


    【解决方案1】:

    我会尝试使用 MouseMove 事件:

    private void button_MouseMove(object sender, MouseEventArgs e)
    {
      if (e.Button == MouseButtons.Left)
      {
        button.DoDragDrop(button, DragDropEffects.Move);
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-08-03
      • 2017-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-12
      相关资源
      最近更新 更多