2011-04-26 117 views
0

我需要获取鼠标在窗体中单击的位置,并保存xy坐标。我做了这个简单的功能:如何调用该函数?

public void kokot (MouseEventArgs e) 
{ 
    x = e.X; 
    y = e.Y; 
    this.Invalidate(); 
} 

我该怎么称呼它?当我尝试kokot()它当然不起作用,因为没有参数。那么我应该在这种情况下使用什么论点?预先感谢您的帮助。

+0

不是C#程序员,所以给人只是一个小提示:你可能要kokot设置为事件处理程序。事件处理程序是一些函数,当事件触发时,它们不会直接调用,而是被某些库“回调”(因此称为“回调函数”)。 – gd1 2011-04-26 15:12:51

+0

Winform或Webform? :| 。 @Felice Pollano:我想也许他只是不知道如何“选择”一个正确答案:) – Maidot 2011-04-26 15:18:51

+0

这不是事件处理函数的正确签名。为什么不让Visual Studio自动为您创建这些? – 2011-04-26 15:20:08

回答

5
public Form1() 
    { 
     InitializeComponent(); 
     this.MouseClick += new MouseEventHandler(Form1_MouseClick); 
    } 

    private void Form1_MouseClick(object sender, MouseEventArgs e) 
    { 
     int x = e.X; 
     int y = e.Y; 
     this.Invalidate(); 
    } 
+0

Ty非常非常。 – Nasgharet 2011-04-26 15:23:33

+0

@Nasgharet:绿色勾号,如果它是好的答案! – gd1 2011-04-26 15:27:45

+0

我可以再问一个问题吗?我在简单的Paint程序上工作...所以不想在Form上绘制,而是在“PANEL ???”上所以我做了它Panel1.MouseClick + =新的MouseEventHandler(Panel1_MouseClick)。它可以工作,但是当我画出一些未见的东西时。在形式上。哪里不对? – Nasgharet 2011-04-26 16:05:43

0

添加超负荷接受两个整数功能:

public void kokot (int X, int Y) 
{ 
    x = X; 
    y = Y; 
    this.Invalidate(); 
} 

然后调用它像这样在你的代码的任何地方:

Point position = System.Windows.Forms.Cursor.Position; 
kokot(position.X, position.Y); 
0

您需要subcsribe的形式鼠标点击事件。

this.MouseClick += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseClick);