尝试通过按住鼠标按钮并拖动来移动按钮

时间:2016-08-25 14:16:48

标签: c# button

我正在尝试开发我的应用程序来创建这样的按钮:

    private void button1_Click(object sender, EventArgs e)
    {
        int top = 150;
        int left = 150;

        for (int i = 0; i < 1; i++)
        {
            Button button = new Button();
            button.Left = left;
            button.Top = top;
            this.Controls.Add(button);
            top += button.Height + 2;
        }
    }

这在一定程度上影响了我的意图。我希望能够创建具有某些属性的这些按钮,但我不知道如何访问各个按钮。

现在,我还希望能够通过按住鼠标按钮并拖动它们来移动这些按钮,然后将它们释放到我想要的位置。这是我从某些在线资源中获得的东西。

        public Form3()
        {
            InitializeComponent();
            button1.MouseDown += button1_MouseDown;
        }

        private Point MouseDownLocation;

        private void button1_MouseDown(object sender, MouseEventArgs e) 
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Left)
            {
                MouseDownLocation = e.Location;
            }
        }

        private void button1_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Left)
            {
                button1.Left = e.X + button1.Left - MouseDownLocation.X;
                button1.Top = e.Y + button1.Top - MouseDownLocation.Y;
            }
        }

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果您想要访问各个按钮,可以尝试创建全局列表:

List<button> buttons = new List<button>();

并将其添加为:

Button button = new Button();
button.Left = left;
button.Top = top;
this.Controls.Add(button);
top += button.Height + 2;
buttons.add(button);

接下来,查看函数button1_MouseMove - 仅当鼠标光标位于按钮内时才有效?它应该这样工作吗?

如果单击按钮,您可以查看列表以查找单击的按钮并移动它 - 您的方法看起来没问题。