2013-10-03 6 views

ответ

21

Используйте Control.PointToClient method. Предполагая, что this указывает на форме вопроса:

var relativePoint = this.PointToClient(new Point(X, Y)); 

Или просто:

var relativePoint = this.PointToClient(Cursor.Position); 
+0

Я использовал: var relativePoint = this.PointToClient (Cursor.Position); но он возвращает координаты экрана – Mordacai1000

+0

Действительно? Это странно ... –

+0

Просто попробовал, и это работает для меня: 'var cpos = Cursor.Position; MessageBox.Show (String.Format ("{0} \ n {1}", cpos, this.PointToClient (cpos))); 'дает две разные точки –

3

Я хотел бы использовать PointToClient так:

Point p = yourForm.PointToClient(Cursor.Position); 
//if calling it in yourForm class, just replace yourForm with this or simply remove it. 
1

Как о попытке, как это с помощью Control.PointToClient: -

public Form() 
    { 
     InitializeComponent(); 

     panel = new System.Windows.Forms.Panel(); 
     panel.Location = new System.Drawing.Point(90, 150); 
     panel.Size = new System.Drawing.Size(200, 100); 
     panel.Click += new System.EventHandler(this.panel_Click); 
     this.Controls.Add(this.panel); 
    } 

    private void panel_Click(object sender, EventArgs e) 
    { 
    Point point = panel.PointToClient(Cursor.Position); 
    MessageBox.Show(point.ToString()); 
    } 
+0

Shure он бы работал хорошо, спасибо, хотя – Mordacai1000

+0

@ Mordacai1000: - Добро пожаловать! –

Смежные вопросы