Làm thế nào để tôi có được vị trí chuột? Tôi muốn nó về vị trí màn hình.
Tôi bắt đầu chương trình của mình, tôi muốn đặt vị trí chuột hiện tại.
Location.X = ??
Location.Y = ??
Chỉnh sửa: Điều này phải xảy ra trước khi biểu mẫu được tạo.
Làm thế nào để tôi có được vị trí chuột? Tôi muốn nó về vị trí màn hình.
Tôi bắt đầu chương trình của mình, tôi muốn đặt vị trí chuột hiện tại.
Location.X = ??
Location.Y = ??
Chỉnh sửa: Điều này phải xảy ra trước khi biểu mẫu được tạo.
Câu trả lời:
Bạn nên sử dụng System.Windows.Forms.Cursor.Position : "Điểm đại diện cho vị trí của con trỏ trong tọa độ màn hình."
PointToClient
.
Nếu bạn không muốn tham chiếu Biểu mẫu, bạn có thể sử dụng interop để lấy vị trí con trỏ:
using System.Runtime.InteropServices;
using System.Windows; // Or use whatever point class you like for the implicit cast operator
using System.Drawing;
/// <summary>
/// Struct representing a point.
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct POINT
{
public int X;
public int Y;
public static implicit operator Point(POINT point)
{
return new Point(point.X, point.Y);
}
}
/// <summary>
/// Retrieves the cursor's position, in screen coordinates.
/// </summary>
/// <see>See MSDN documentation for further information.</see>
[DllImport("user32.dll")]
public static extern bool GetCursorPos(out POINT lpPoint);
public static POINT GetCursorPosition()
{
POINT lpPoint;
GetCursorPos(out lpPoint);
// NOTE: If you need error handling
// bool success = GetCursorPos(out lpPoint);
// if (!success)
return lpPoint;
}
Cursor.Position sẽ nhận được độ độc màn hình hiện tại của chuột (nếu bạn đang ở trong Control , MousePosition cũng sẽ nhận được giá trị tương tự).
Để đặt vị trí chuột, bạn sẽ phải sử dụng Cursor.Position
và cung cấp cho nó một Điểm mới :
Cursor.Position = new Point(x, y);
Bạn có thể thực hiện điều này trong Main
phương pháp của mình trước khi tạo biểu mẫu.
Để trả lời ví dụ cụ thể của bạn:
// your example
Location.X = Cursor.Position.X;
Location.Y = Cursor.Position.Y;
// sample code
Console.WriteLine("x: " + Cursor.Position.X + " y: " + Cursor.Position.Y);
Đừng quên thêm using System.Windows.Forms;
và thêm tham chiếu vào nó (nhấp chuột phải vào tham chiếu> thêm tham chiếu> tab .NET> Systems.Windows.Forms> ok)
System.Windows.Forms.Control.MousePosition
Nhận vị trí của con trỏ chuột trong tọa độ màn hình. "Thuộc tính Vị trí giống với thuộc tính Control.MousePosition."
Để có được vị trí, hãy xem sự kiện OnMouseMove. MouseEventArgs sẽ cung cấp cho bạn các vị trí x an y ...
protected override void OnMouseMove(MouseEventArgs mouseEv)
Để đặt vị trí chuột, hãy sử dụng thuộc tính Cursor.Position.
http://msdn.microsoft.com/en-us/library/system.windows.forms.cursor.position.aspx
internal static class CursorPosition {
[StructLayout(LayoutKind.Sequential)]
public struct PointInter {
public int X;
public int Y;
public static explicit operator Point(PointInter point) => new Point(point.X, point.Y);
}
[DllImport("user32.dll")]
public static extern bool GetCursorPos(out PointInter lpPoint);
// For your convenience
public static Point GetCursorPosition() {
PointInter lpPoint;
GetCursorPos(out lpPoint);
return (Point) lpPoint;
}
}
Nếu bạn cần có được vị trí hiện tại trong khu vực của biểu mẫu (đã thử nghiệm), hãy thử:
Console.WriteLine("Current mouse position in form's area is " +
(Control.MousePosition.X - this.Location.X - 8).ToString() +
"x" +
(Control.MousePosition.Y - this.Location.Y - 30).ToString()
);
Mặc dù, 8 và 30 số nguyên đã được tìm thấy bằng thử nghiệm.
Sẽ thật tuyệt nếu ai đó có thể giải thích tại sao chính xác những con số này ^.
Ngoài ra, có một biến thể khác (xem xét mã nằm trong CodeBehind của Biểu mẫu):
Point cp = this.PointToClient(Cursor.Position); // Getting a cursor's position according form's area
Console.WriteLine("Cursor position: X = " + cp.X + ", Y = " + cp.Y);
Bạn cũng phải có các lần nhập sau để nhập DLL
using System.Runtime.InteropServices;
using System.Diagnostics;