PDA

View Full Version : حرفه ای: Drog & move



sinashahab
سه شنبه 26 مرداد 1389, 05:47 صبح
سلام دوستان

من یه سوال در این رابطه داشتم که چگونه میشه یه کنترل مثل پیکچر باکس یا هر چیزه دیگه رو دراگ کرد و حرکت داد.

مثل وقتی که شما جای یه کنترل رو هنگام برنامه نویسی تغییر بدی.

این کار رو قبلا توی وی بی ۶ با دستورات ای پی آی انجام داده بودم. حالا که سی شارپ جای خودشو داره!!:لبخند:

ممنون دوستان:تشویق::تشویق:

mmd2009
سه شنبه 26 مرداد 1389, 06:02 صبح
با سلام خدمت دوست عزیزم

به این (http://www.barnamenevis.org/forum/showthread.php?t=98896)تاپیک یک سری بزن مفیده :قلب:

sinashahab
چهارشنبه 27 مرداد 1389, 14:40 عصر
سلام دوستان

خودم می دونم خیلی کم پیدا میشن بعد از رسیدن به جواب بیان و برای بقیه جوابشونو بزارن !:لبخند:
اینم از نت برداری که خودم انجام دادم .
یه کلاس به نام HelperMethods می سازی :

using System;
using System.Runtime.InteropServices;

namespace Tarahi
{
internal static class HelperMethods
{
public static void MoveObject(IntPtr hWnd)
{
SafeNativeMethods.ReleaseCapture();
SafeNativeMethods.SendMessage(hWnd, SafeNativeMethods.WM_NCLBUTTONDOWN, SafeNativeMethods.HTCAPTION, 0);
}
}
}

بعدش یه کلاس دیگه با نام SafeNativeMethods میسازی و اینو میزاری توش :

using System;
using System.Runtime.InteropServices;

namespace Tarahi
{
internal static class SafeNativeMethods
{
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.I4)]
public static extern int SendMessage(
IntPtr hWnd,
[param: MarshalAs(UnmanagedType.U4)]
uint Msg,
[param: MarshalAs(UnmanagedType.U4)]
uint wParam,
[param: MarshalAs(UnmanagedType.I4)]
int lParam);

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool ReleaseCapture();

public const uint WM_NCLBUTTONDOWN = 0xA1; // 161
public const uint HTCAPTION = 2;
}
}

آخرش هم این کد رو توی event MouseDown کنترل خود مثلا پیکچر باکس می زازی :

HelperMethods.MoveObject(this.Handle);