2016-07-12 6 views
0

フォームの左上隅に座標系の開始点を設定する方法はありますか?それはモニターの左上隅に開始点を設定しているので形成するが、私は、フォームの左上隅にポイントを開始する必要はありません。..フォームの左上隅に座標系の開始点を設定する方法は?

ここで私がやろうよどのようなコードです:

int x, y; 
string _x, _y; 

private void GetCursor() 
     { 
      _x = MousePosition.X.ToString(); 
      x = int.Parse(_x); 
      label2.Text = _x; 
      _y = MousePosition.Y.ToString(); 
      y = int.Parse(_y); 
      label4.Text = _y; 
     } 

     private void MoveButton() 
     { 
      button1.Location = new Point(x,y); 

     } 
    private void timer1_Tick(object sender, EventArgs e) 
    { 
     GetCursor(); 
     MoveButton(); 
    } 

感謝。

+0

コードを投稿してください。 – vanloc

+0

ボタンを動かすときに、メソッドが "MoveMouse"と呼ばれるのはなぜですか? – Amy

答えて

0

ファーストクラスの追加(Win32.cs)

public class Win32 
{ 
    [DllImport("User32.Dll")] 
    public static extern long SetCursorPos(int x, int y); 

    [DllImport("User32.Dll")] 
    public static extern bool ClientToScreen(IntPtr hWnd, ref POINT point); 

    [StructLayout(LayoutKind.Sequential)] 
    public struct POINT 
    { 
     public int x; 
     public int y; 
    } 
} 

を使用したイベントから呼び出すことができます。txtMouseXtxtMouseYがあると

Win32.POINT p = new Win32.POINT(); 
p.x = Convert.ToInt16(txtMouseX.Text); 
p.y = Convert.ToInt16(txtMouseY.Text); 

Win32.ClientToScreen(this.Handle, ref p); 
Win32.SetCursorPos(p.x, p.y); 

カスタムパラメータ。私はこれが(0、0)であるべきだと思います。

0

あなたが次にControl.PointToClient方法

Point localPoint = myForm.PointToClient(Cursor.Position); 
label2.Text = localPoint.X.ToString(); 
label4.Text = localPoint.Y.ToString(); 
関連する問題