我有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.
}
有什么建议吗?
答案 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
事件同样如此。