سوال در مورد ساخت UserControl برای تغییر شکل فرم در سی شارپ

#C

توسط thearrow در 5 سال پیش
0 1.5k 5 5 سال پیش
thearrowreza-irdev
0

سلام من یک فرم با استفاده از عکس و چیزای دیگه توی UserControl ساختم اما وقتی گزینه ی FormBorderStyleـه فرمم رو None میکنم و این یوزر کنترل رو اضافه میکنم ، و بعد برنامه رو اجرا میکنم ، فرم رو حرکت نمیده و یوزر کنترل رو داخل خود فرمِ اصلی حرکت میده ! نمیشه کاری به جز اینکه تو فرم اصلی کدی نوشته شه ، فرم رو با استفاده از همین یوزر کنترل حرکت داد ؟

ممنون

0

درود

[CSHARP] using System.Runtime.InteropServices; [/CSHARP]

[CSHARP] 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 userControl11_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
        {
            ReleaseCapture();
            SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
        }
    }

[/CSHARP]

موفق باشید.

0

ممنون اما بازم همون جوریه !

0

این کدو روی هر کنترلی بذارید کار میکنه و تست شده. یوزر کنترل در حالت عادی تو فرم حرکت نمیکنه احتمالا خودتون کدی نوشتید که اینطوری میشه. اگر نمیتونید پیداش کنید پروژه رو ضمیمه کنید.

0

سلام اشتباه من بود! یوزر کنترل handle جداگانه ای داره بخاطر همینه که خودش تو فرم جا به جا میشه. برای اینکه درست بشه باید بگیم handle والد رو بگیر. البته کد بالا درسته اما برای استفاده در یوزر کنترل درست نیست. پس کد [CSHARP] SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0); [/CSHARP] رو به این کد تغییر بدید: [CSHARP] SendMessage(Parent.Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0); [/CSHARP] موفق باشید :winksmiley02:

خوش آمدید

برای طرح سوال، ایجاد بحث و فعالیت در سایت نیاز است ابتدا وارد حساب کاربری خود شوید. در صورتی که هنوز عضو سایت نیستید میتوانید در عرض تنها چند ثانیه ثبت نام کنید.

لطفا ابتدا لاگین کنید