这个。护士不能正常工作?

时间:2016-03-06 01:04:16

标签: c#

我正在开发一个控制鼠标的项目,在下面的代码中,我有点迷失。

我声明了对象所需的命名空间:

using System.Windows;
using System.Windows.Forms;
using System.Drawing;

并在此处的代码中:

this.Cursor = new Cursor(Cursor.Current.Handle);
Cursor.Position = new Point(Cursor.Position.X, Cursor.Position.Y);
Cursor.Clip = new Rectangle(this.Location, this.Size);

它告诉我Cursor在上下文中不存在,但只在this.Cursor中存在。同样适用于this.Locthis.Size。谁知道为什么?我错过了名称空间吗?

编辑:确切代码:

public class MouseMove
{
    [DllImport("user32.dll")] //TODO add block feature on screens that need it
    private static extern bool BlockInput(bool block);

    public static void Main()
    {
        this.Cursor = new Cursor(Cursor.Current.Handle);
        Cursor.Position = new Point(Cursor.Position.X, Cursor.Position.Y);
        Cursor.Clip = new Rectangle(this.Location, this.Size);
    }
}

2 个答案:

答案 0 :(得分:1)

PositionClipCursor的静态属性。您无法使用实例访问它们。要使用静态变量,您需要使用以下语法:classname.variablename。在您的情况下,代码应类似于:

static void Main(string[] args)
{
    Cursor.Position = new Point(Cursor.Position.X, Cursor.Position.Y);
    Cursor.Clip = new Rectangle(location, size);
}

正如我所考虑的那样,您从MSDN中获取了一个示例,但在示例中有一个WinForm应用程序,其表单具有游标 - this.Cursor。 在Cursor.PositionCursor上是一个类名,而不是一个实例。

private void MoveCursor()
{
   //here Cursor is a form's property 
   this.Cursor = new Cursor(Cursor.Current.Handle); 
   // here Cursor is a class name, Position is a static variable.
   Cursor.Position = new Point(Cursor.Position.X - 50, Cursor.Position.Y - 50); 
   // here Cursor is a class name, Clip is a static variable.
   Cursor.Clip = new Rectangle(this.Location, this.Size); 
}

答案 1 :(得分:1)

您正在做的是用自己替换系统的光标......

我建议这样的事情:

public static void Main()
{
    Cursor myCursor = new Cursor(Cursor.Current.Handle);
    myCursor.Position = new Point(Cursor.Position.X, Cursor.Position.Y);
    myCursor.Clip = new Rectangle(this.Location, this.Size);
}

这样安全。但即便如此,我也不确定你要做什么......