C# 鼠标移动时更新表单文本

C# 鼠标移动时更新表单文本,c#,mouseevent,C#,Mouseevent,我有一个简单的表单,我想显示随着用户移动鼠标而不断更新的光标位置。我遇到的问题是,移动鼠标时文本不会更新 public void mouse_position(object sender, MouseEventArgs e) { TextBox textBox1 = new TextBox(); Label label1 = new Label(); // Initialize the controls and their bounds. label1.Lo

我有一个简单的表单,我想显示随着用户移动鼠标而不断更新的光标位置。我遇到的问题是,移动鼠标时文本不会更新

public void mouse_position(object sender, MouseEventArgs e)
 {
    TextBox textBox1 = new TextBox();
    Label label1 = new Label();

    // Initialize the controls and their bounds.

    label1.Location = new Point(1400, 500);
    label1.Size = new Size(10, 10);
    label1.BringToFront();
    label1.BackColor = Color.Aqua;

    // Add the Label control to the form's control collection.
    Controls.Add(label1);
    label1.Text = Cursor.Position.Y.ToString();

 }
就像我说的,它给了我鼠标的初始位置,但从不更新。你可以使用这个事件

public event System.Windows.Forms.MouseEventHandler MouseMove;

我想你想要这样的东西:

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
   int mouseX = e.X;
   int mouseY = e.Y;

   textBox1.Text = "X: " + e.X.ToString() + "Y: " + e.Y.ToString();

}
基本上,每次在表单上移动鼠标时,textbox1都会随着鼠标的X/Y位置而更新

输出(仅用于演示目的):


这是哪个事件处理程序?MouseUp,MouseDown还是MouseMove?您不应该重命名标准的
controlName\u EventName
处理程序,而应该创建一个新方法并从处理程序中调用它。您只需要创建一次这样的控件,而不是在每次移动中创建。可以在表单的Load()事件中完成创建。然而,要通过
label1
访问它,您必须在类/表单级别(而不是在该方法中本地)声明它。为什么要动态创建控件而不是通过设计器将控件放到窗体上?“当鼠标移动时”-鼠标移动到哪里?该事件仅为控制而引发,例如,
窗体
,但只要将鼠标移到其子级上,就不会在父级上引发该事件。您将需要使用另一种技术,例如,所有子项都必须订阅
MouseMove
,并调用某种表单方法来更新坐标。如果您希望在整个应用程序中跨所有控件移动,请查看实现。我有一个你可以开始的地方。