PDA

View Full Version : سوال: معادل یک کد دلفی در سی شارپ



yashar666
سه شنبه 23 خرداد 1391, 19:42 عصر
با سلام
معادل این کد در سی شارپ رو می خواستم ؟


procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
Perform(WM_SYSCOMMAND,$f012,0);
end;
این باعث میشه که با موس فرم رو تکان بدیم (هر جای فرم )

Y_Safaiee
سه شنبه 23 خرداد 1391, 20:22 عصر
با سلام خدمت شما



using System.Runtime.InteropServices;


namespace WindowsFormsApplication1
{

public partial class Form1 : Form
{
[DllImport("user32.dll")]
static extern int ReleaseCapture();
[DllImport("user32.dll", EntryPoint = "SendMessageA")]
static extern int SendMessage(int hwnd, int wMsg, int wParam, object lParam);
private const int WM_NCLBUTTONDOWN = 161;

public Form1()
{
InitializeComponent();
}

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
ReleaseCapture();
SendMessage(this.Handle.ToInt32(), WM_NCLBUTTONDOWN, 2, 0);
}
}
}






موفق باشید
بایت بایت

yashar666
سه شنبه 23 خرداد 1391, 22:20 عصر
موقعی که موس رو ول می کنم error میده تا زمانی که گرفتم کار می کنه

A call to PInvoke function 'WindowsFormsApplication24!WindowsFormsApplication 24.Form1::SendMessage' has unbalanced the stack. This is likely because the managed PInvoke signature does not match the unmanaged target signature. Check that the calling convention and parameters of the PInvoke signature match the target unmanaged signature.

Y_Safaiee
سه شنبه 23 خرداد 1391, 22:31 عصر
با سلام مجدد من تست کردم ارور نداد اما در کل شما میتونی از کد دوست گرامی ام "فرید نجفلو" هم استفاده کنی


این کد ها رو به فرم اضافه کنید(تنظیم Event ها فراموش نشه)




private bool FormInMove = false;

private Point MouseDownPos = new Point();

private void Form1_MouseDown(object sender, MouseEventArgs e)

{

MouseDownPos = (e.Location);

FormInMove = true;

}

private void Form1_MouseUp(object sender, MouseEventArgs e)

{

FormInMove = false;

}

private void Form1_MouseMove(object sender, MouseEventArgs e)

{

if (FormInMove)

{

Point Newlocatin = new Point();

Newlocatin.X = PointToScreen(e.Location).X- MouseDownPos.X;

Newlocatin.Y = PointToScreen(e.Location).Y - MouseDownPos.Y;

this.Location = Newlocatin;

}

yashar666
سه شنبه 23 خرداد 1391, 22:41 عصر
اون کد وقتی exe می شه مشکلی نداره ولی تو خود vs مشکل داره ..در هر صورت ممنونم