2015-06-14 1 views
-1

У меня есть форма для окон без рамки. Итак, я добавил окно с изображением, и я хочу, чтобы вся форма была перемещена, когда щелкнул этот ящик.Перемещение окон из окна изображения в C#

public const int WM_NCLBUTTONDOWN = 0xA1; 
    public const int HT_CAPTION = 0x2; 

    [DllImportAttribute("user32.dll")] 
    public static extern int SendMessage(IntPtr hWnd, 
    int Msg, int wParam, int lParam); 
    [DllImportAttribute("user32.dll")] 
    public static extern bool ReleaseCapture(); 

    private void header_image_MouseDown(object sender, MouseEventArgs e) 
    { 
     if (e.Button == MouseButtons.Left) 
     { 
      ReleaseCapture(); 
      SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0); 
     } 
    } 

Это код, который я использую atm.But моя проблема в том, что если я переместить курсор очень быстро он не торчал на поле изображения.

Я попытался найти решение, но ничего не получилось. я использовал некоторую информацию из этих 2-х звеньев:

link 1

link 2

Любые идеи?

EDIT: Вот весь код моей формы

public Form1() 
    { 
     InitializeComponent(); 
    } 

    public const int WM_NCLBUTTONDOWN = 0xA1; 
    public const int HT_CAPTION = 0x2; 

    [DllImportAttribute("user32.dll")] 
    public static extern int SendMessage(IntPtr hWnd, 
    int Msg, int wParam, int lParam); 
    [DllImportAttribute("user32.dll")] 
    public static extern bool ReleaseCapture(); 

    private void header_image_MouseDown(object sender, MouseEventArgs e) 
    { 
     if (e.Button == MouseButtons.Left) 
     { 
      ReleaseCapture(); 
      SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0); 
     } 
    } 
+0

Я не могу воспроизвести. Какова функция Picturebox? Имеете ли вы тот же код для Form1_MouseDown? Любые другие события мыши закодированы? – TaW

+0

fucntion - MouseDown. и только для picturebox. И нет никаких других событий мыши закодированы. Я просто хочу переместить всю форму только из header_image. – Silver

ответ

0

Используйте MouseMove() событие вместо MouseDown():

private void header_image_MouseMove(object sender, MouseEventArgs e) 
    { 
     if (e.Button == System.Windows.Forms.MouseButtons.Left) 
     { 
      ReleaseCapture(); 
      SendMessage(this.Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0); 
     } 
    } 
+0

По-прежнему та же проблема .. – Silver