在编辑按钮上激活MouseEvent单击C#

时间:2015-05-25 10:42:22

标签: c# winforms

我有Form文本框,他们有MouseEvent(MouseMove,MouseDown),并且它们在表单加载时启用,但我的问题是如何在我单击编辑按钮时调用它们,那么文本框可以移动吗? / p>

我的代码:

 private void textBox_MouseMove(object sender, MouseEventArgs e)
    {
        TextBox txt = sender as TextBox;
        foreach (TextBox text in textBoxs)
        {
            if (e.Button == MouseButtons.Left)
            {
                if (txt.Name == text.Name)
                {
                    txt.Left = e.X + txt.Left - MouseDownLocation.X;
                    txt.Top = e.Y + txt.Top - MouseDownLocation.Y;
                }
            }
        }
    }

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

   private void btnEdit_Click(object sender, EventArgs e)
    {
        btnEdit.Visible = false;
        btnPrint.Visible = false;
        btnSave.Visible = true;

        //Want to call mouse function here.

    }

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

如果我理解您的帖子,您希望文本框功能变为“活跃”#34;点击btnEdit按钮后?

您可以在btnEdit_Click中设置一个标志,只有在该标志为真时才处理其他功能中的功能

或者,可以在btnEdit_Click函数中添加事件,例如

private void btnEdit_Click(object sender, EventArgs e)
{
    btnEdit.Visible = false;
    btnPrint.Visible = false;
    btnSave.Visible = true;

    //Want to call mouse function here.

    textBox.MouseDown += new MouseEventHandler(textBox_MouseDown);

}

但请从代码中当前存在的位置删除该额外行。

答案 1 :(得分:1)

您应该通过添加以下行来手动挂钩btnEdit_Click处理程序方法中的事件,而不是挂钩Visual Studio设计器中的事件:

textboxname.MouseMove += new MouseEventHandler(textBox_MouseMove);

然后通过执行以下操作,在单击保存按钮(我假设您有一些方法btnSave_Click)时取消挂起事件:

textboxname.MouseMove -= new MouseEventHandler(textBox_MouseMove);

MouseDown事件同样如此。