请问捕获鼠标坐标,两种写法有什么区别?

zssecdf3 2011-09-02 12:09:43
Control.MousePosition 属性:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.control.mouseposition.aspx

既然MousePosition是获取鼠标光标的位置,那前缀还有什么用处呢?Form1.MousePosition与Button.MousePosition都是获取鼠标光标的位置,而且,其值也是相等的吧。
...全文
264 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
vrhero 2011-09-02
  • 打赏
  • 举报
回复
哦,这是个静态成员...那1楼说的就不对了,静态成员是属于类的,那不可能有你那种用法...Form1是没有这个成员的...

至于Form和Button,它们都是Contorl,这个属性是Contorl的,所以它们都能访问...
萧炎 2011-09-02
  • 打赏
  • 举报
回复
Form1.MousePosition 将指定屏幕点的位置计算成工作区坐标。(屏幕--窗体)
Button.MousePosition 将指定屏幕点的位置计算成工作区坐标。(屏幕--按钮)
funxu 2011-09-02
  • 打赏
  • 举报
回复
实际上static不是继承,看起来好像继承了,这只是个假象,他们调用的还是父类的方法
满衣兄 2011-09-02
  • 打赏
  • 举报
回复
MousePosition是从父类继承下来的,例如你和你老婆都是黄头发,黑眼睛,那么你们生出来的孩子也是黄头发黑眼睛,这里的黄头发黑眼睛就是子类从父类继承得到的,显然子类也是需要这个属性的。
funxu 2011-09-02
  • 打赏
  • 举报
回复
这个例子敲错了,是这样
private void button1_Click(object sender, EventArgs e)
{
c.testfunction();//明白了吗?
}
funxu 2011-09-02
  • 打赏
  • 举报
回复
也就是说,他们调用的实际上是System.Windows.Forms.Control例的方法,问一个问题 static 方法可以被继承么?
funxu 2011-09-02
  • 打赏
  • 举报
回复
这个方法实际上是在System.Windows.Forms.Control里声明的
而Form与Button都是其子类
zssecdf3 2011-09-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 vrhero 的回复:]

既然吃饭是把饭吃到肚子里,那人还有什么用处呢?张三吃饭与李四吃饭都是吃饭,而且,其作用也是相同的吧...

“实例方法”你知道是什么意思吗?“实例”又是什么意思呢?去找本OOP的入门书好好看...
[/Quote]
上面三位朋友的回答,我还是不明白,MousePosition是静态成员啊,只能由类访问啊
张三把窗帘拉开与李四把窗帘拉开,其结果都是把窗帘打开,谁去拉都是一样的啊
funxu 2011-09-02
  • 打赏
  • 举报
回复
看下他的声明
public static Point MousePosition { get; }
然后看下这个例子
class a
{
public static void testfunction()
{
Console.WriteLine("a");
}
}
class b : a
{

}
class c:b
{

}
//----------------------------------
private void button1_Click(object sender, EventArgs e)
{
c = new c();
c.testfunction();//明白了吗?
}
LMAOhuaNL 2011-09-02
  • 打赏
  • 举报
回复
既然MousePosition是获取鼠标光标的位置,那前缀还有什么用处呢?Form1.MousePosition与Button.MousePosition都是获取鼠标光标的位置,而且,其值也是相等的吧。

但是其实例不同的,所以还是有区别
vrhero 2011-09-02
  • 打赏
  • 举报
回复
既然吃饭是把饭吃到肚子里,那人还有什么用处呢?张三吃饭与李四吃饭都是吃饭,而且,其作用也是相同的吧...

“实例方法”你知道是什么意思吗?“实例”又是什么意思呢?去找本OOP的入门书好好看...
dayong98 2011-09-02
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 zdzcool 的回复:]

这个两个的参照坐标不一样啊,一个是窗口的,一个是控件的。
[/Quote]
Form1.MousePosition.X=1 y=1
Button.MousePosition.X=1 y=1
假设Form1和Button的值都一样,但是在屏幕上的点不一定重叠。
sdl2005lyx 2011-09-02
  • 打赏
  • 举报
回复
还有,对应鼠标坐标这个概念,楼主不用去过于较真,每个鼠标事件,参数理都要这个信息,如:

private void Form1_MouseClick(object sender, MouseEventArgs e)
{
Point pt=e.Location;//鼠标事件产生是鼠标的位置
}
sdl2005lyx 2011-09-02
  • 打赏
  • 举报
回复
楼主,鼠标、光标是两个不同概念,Cursor.Position :当前光标位置!
assky124 2011-09-02
  • 打赏
  • 举报
回复
调用的Button还是Form得该属性,应该都是Control父控件的

干嘛不用Cursor.Position
funxu 2011-09-02
  • 打赏
  • 举报
回复
MousePosition 属性返回 Point,它表示在引用属性时鼠标光标的位置。这些坐标指示屏幕上的位置(不相对于控件),并且无论光标是否位于控件上都会被返回。屏幕左上角的坐标为 0,0。
funxu 2011-09-02
  • 打赏
  • 举报
回复
回答你的问题,结果是一样的,随便写一个都行,结贴吧
zssecdf3 2011-09-02
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 funxu 的回复:]

3,5,6,7L的回复,Lz完全没有在看么?
[/Quote]
看了的,但是,没有解决我的问题:

private void Form1_Click(object sender, EventArgs e)
{
MessageBox.Show(Form1.MousePosition.X.ToString());
MessageBox.Show(Button.MousePosition.X.ToString());
}

这两种输出结果是一样的,用Form1和Button有啥区别啊,是不是随便写一个都行呢?
zdzcool 2011-09-02
  • 打赏
  • 举报
回复
这个两个的参照坐标不一样啊,一个是窗口的,一个是控件的。
vrhero 2011-09-02
  • 打赏
  • 举报
回复
嗯,继续犯错...也许楼主这个Form1是他自己写的继承类而不是实例...

一句话...不管什么Form、Form1还是Button,它们都是Contorl,这个属性是Contorl的,所以它们都能访问...
加载更多回复(3)

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧