একটি সীমানাহীন ফর্ম চলমান করতে চান?


109

যখন কোনও সীমানা ছিল ঠিক তেমনভাবে ফর্মটিতে মাউসটি ক্লিক করা হবে তখন কোনও সীমানা নেই এমন কোনও ফর্ম তৈরি করার কোনও উপায় রয়েছে (ফর্মবোর্ডার স্টাইলটি "কিছুই নয়" তে সেট করা আছে)?

উত্তর:


252

কোডপ্রজেক্টের এই নিবন্ধটিতে একটি কৌশল বিশদ রয়েছে। মূলত এগুলি ফোটায়:

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

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

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

এই মূলত করে ঠিক একটি উইন্ডো শিরোনাম বার দখল দৃশ্য জানালা ম্যানেজারের বিন্দু থেকে হিসাবে একই।


এটি আমার পক্ষে মোটেও কাজ করে না। কোড ঠিক চলছে, সবকিছু ঠিক আছে, এবং আমার উইন্ডোটি এখনও ঠিক সেখানে বসে আছে। কোন ধারনা?
dbrree

8
@dbrree আপনি সম্ভবত কোডটি অনুলিপি করেছেন, যা Form1_MouseDownসত্যিকারের MouseDownইভেন্টে নির্ধারিত না হয়ে কাজ করবে না Form1
রেমন রেমি

2
আপনার যদি একটি লেবেল বা আইকন থাকে (বা অন্য কোনও অগ্রভাগ অবজেক্টস!) যেখানে আপনি টানতে ফর্মটি ধরছেন, এই আইটেমগুলিতেও একটি মোডাউনড ইভেন্ট যুক্ত করুন। ফর্ম ইভেন্টগুলি ফর্ম অবজেক্টগুলির মাধ্যমে দেখতে পাচ্ছে না।
পল নেলসন

1
ফর্মটির জন্য this.MouseDown += ...আপনাকে Main()
রিচার্ড পেক

1
আমার জন্য কবজির মতো কাজ করেছে !!!! ফর্মটির জায়গায় আমি যে প্যানেলটি রেখেছিলাম তাতে আমাকে হ্যান্ডলিংয়ের ঘটনাটি সরানো হয়েছিল তবে এটি কার্যকর হয়েছিল
জাস্টিন

54

যেকোন জিনিসগুলির প্রয়োজনের তুলনায় আর কোনও সমস্যা না করা যাক। আমি কোডের এতগুলি স্নিপেট নিয়ে এসেছি যা আপনাকে ফর্মটি (বা অন্য কোনও নিয়ন্ত্রণ) চারপাশে টেনে আনতে দেয়। এবং তাদের অনেকের নিজস্ব ত্রুটি / পার্শ্ব প্রতিক্রিয়া রয়েছে। বিশেষত সেইগুলি যেখানে তারা উইন্ডোজকে এমন ভাবনায় প্ররোচিত করে যে কোনও ফর্মের একটি নিয়ন্ত্রণই আসল রূপ।

বলা হচ্ছে, এখানে আমার স্নিপেট। আমি সব সময় এটি ব্যবহার। আমি এটিও নোট করতে চাই যে আপনার এটি ব্যবহার করা উচিত নয় nঅনুপাতিক (); অন্যরা যেমন করতে পছন্দ করে কারণ এটি ফর্মটিকে কিছু ক্ষেত্রে ঝাঁকুনির কারণ করে। এবং কিছু ক্ষেত্রে এটি করে। রিফ্রেশ। এটি ব্যবহার করে p আপডেট, আমার কোনও ঝাঁকুনির সমস্যা নেই:

private bool mouseDown;
private Point lastLocation;

    private void Form1_MouseDown(object sender, MouseEventArgs e)
    {
        mouseDown = true;
        lastLocation = e.Location;
    }

    private void Form1_MouseMove(object sender, MouseEventArgs e)
    {
        if(mouseDown)
        {
            this.Location = new Point(
                (this.Location.X - lastLocation.X) + e.X, (this.Location.Y - lastLocation.Y) + e.Y);

            this.Update();
        }
    }

    private void Form1_MouseUp(object sender, MouseEventArgs e)
    {
        mouseDown = false;
    }

1
ডাং উইনফর্মস ... প্রায় দুই ঘন্টা এই উত্তরটির সন্ধান করেছেন .... যদিও আমি আপনাকে নতুন করে দেখি!
প্রিন্সআফআরভেনস

আমি ঠিক এইভাবেই ভেবেছিলাম, আমার একমাত্র বিষয় হ'ল আপনি কীভাবে এটি করেছেন তা না পড়া পর্যন্ত এটি সমস্ত নরকের মতো বগি।
সাথীদের

ওয়ানড্রাইডস ডাব্লুড্রপ্রোকের উপরে আশ্চর্যজনক ক্ষুদ্র স্নিপেটের চেয়ে এটি আমার জন্য আরও ভাল কাজ করেছে। মনে মনে, ডাব্লুড্রপ্রোক কাজ করেছে ... এটি অন্য জিনিসগুলি কাজ করা থেকে বিরত করেছে। ধন্যবাদ!
মিম

সম্ভবত এখানে সেরা বিকল্পটি দুর্দান্ত কাজ করে এবং ডাব্লুড্রপোকের উপর নির্ভর করে না (সহজেই মনোোর সাথে অন্য প্ল্যাটফর্মগুলিতে পোর্ট করা যেতে পারে)। Y <10
সিলভারড্র্যাগ

এটি মনোতে কাজ করে না, নেট .৪.২.২ কে মনো / নেট ৪.৫ এ পরিবর্তন করে এবং এখনও কাজ করে না। এখনই এর সন্ধানের চেষ্টা করা হচ্ছে।
রজার ডিপ

35

একই জিনিসটি করার আরও একটি সহজ উপায়।

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        // set this.FormBorderStyle to None here if needed
        // if set to none, make sure you have a way to close the form!
    }
    protected override void WndProc(ref Message m)
    {
        base.WndProc(ref m);
        if (m.Msg == WM_NCHITTEST)
            m.Result = (IntPtr)(HT_CAPTION);
    }

    private const int WM_NCHITTEST = 0x84;
    private const int HT_CLIENT = 0x1;
    private const int HT_CAPTION = 0x2;
}

1
যে কেউ এটি সম্ভব করে তোলে যে আপনি একটি নির্দিষ্ট সরঞ্জাম (উদাহরণস্বরূপ একটি লেবেল) ধরে ফর্মটি সরাতে পারবেন।
থমাস ডাব্লু

2
ডাবল ক্লিক করলে, ফর্মটি সর্বাধিক হয়ে যায়। এছাড়াও এখানে এবং সেখানে পড়ুন যে এটি ডান-ক্লিকটি ভেঙে দেয়।
সেবাস্তিয়ানো

19

মাউসডাউন, মাউসমোভ এবং মাউসআপ ব্যবহার করুন। আপনি তার জন্য একটি পরিবর্তনশীল পতাকা সেট করতে পারেন। আমার একটি নমুনা রয়েছে তবে আমি মনে করি আপনাকে সংশোধন করা দরকার।

আমি একটি প্যানেলে মাউস অ্যাকশন কোডিং করছি। আপনি একবার প্যানেলে ক্লিক করলে, আপনার ফর্মটি এটির সাথে সরে যাবে।

//Global variables;
private bool _dragging = false;
private Point _offset;
private Point _start_point=new Point(0,0);


private void panel1_MouseDown(object sender, MouseEventArgs e)
{
   _dragging = true;  // _dragging is your variable flag
   _start_point = new Point(e.X, e.Y);
}

private void panel1_MouseUp(object sender, MouseEventArgs e)
{
   _dragging = false; 
}

private void panel1_MouseMove(object sender, MouseEventArgs e)
{
  if(_dragging)
  {
     Point p = PointToScreen(e.Location);
     Location = new Point(p.X - this._start_point.X,p.Y - this._start_point.Y);     
  }
}

এইটা. ইতিমধ্যে অন্য কোথাও বলা হয়েছে, এটি এখনও ফর্মের উপর নির্ভর করে যা মাউসমোভ ইভেন্টগুলি উত্পন্ন করে। একটি সাধারণ কেস হিসাবে, ধরুন আপনি শীর্ষ-পিক্সেল সারিতে ফর্মটি গ্রেড করে উপরের দিকে টানুন। কিছুই ঘটবে না, যদিও আপনি মাউসটিকে এর পিছনে সরিয়ে নেওয়ার সাথে সাথে ফর্মটি চারপাশে লাফিয়ে উঠবে।
জয়ে 8

12

শুধুমাত্র ডাব্লুপিএফ


হস্তান্তর করার জন্য সঠিক কোড নেই, তবে একটি সাম্প্রতিক প্রকল্পে আমি মনে করি যে আমি মাউসডাউন ইভেন্টটি ব্যবহার করেছি এবং কেবল এটি রেখেছি:

frmBorderless.DragMove();

উইন্ডো.ড্রেগমুভ পদ্ধতি (এমএসডিএন)


2
যদিও এটি ডব্লিউপিএফ। ঠিক আছে, ওপি ঠিক এটি নির্দিষ্ট করে নি specify
জোয়

হ্যাঁ, যা আমি যা করছিলাম সেই প্রকল্পটি ভুলে গিয়েছিলাম। আমি কেবল ফর্মগুলির দিকে নজর রেখেছি এবং এটি উপলব্ধ নেই। দুঃখিত!
ক্রিস

3
@ ক্রিস এটি একটি ডব্লিউপিএফ প্রকল্পে আমার জন্য কাজ করেছিল। উত্তর মুছে না দেওয়ার জন্য ধন্যবাদ।
রিম্বুনেটর

7

সূত্র। ভিডিও লিঙ্ক

এটি পরীক্ষিত এবং বোঝা সহজ।

protected override void WndProc(ref Message m)
{
    switch (m.Msg)
    {
        case 0x84:
            base.WndProc(ref m);
            if((int)m.Result == 0x1)
                m.Result = (IntPtr)0x2;
            return;
    }

    base.WndProc(ref m);
}

6
এই কোডটি কাজ করে, তবে কীভাবে এটি বোঝা সহজ? আমি এই কোড সেগমেন্টে স্যুইচ স্টেটমেন্ট ছাড়াও কিছুই জানি না!
জামশেদ কামরান

এটি WM_NCHITTESTছদ্মবেশে আছে।
আন্ড্রেয়াস রেজব্র্যান্ড

4

এটিকে কেবল ম্যাজিকভাবেই ঘটানোর জন্য আপনি কোনও ফ্লিপ করতে পারবেন এমন কোনও সম্পত্তি নেই। ফর্মটির জন্য ইভেন্টগুলি দেখুন এবং এটি সেট করে this.Topএবং প্রয়োগ করে এটি প্রয়োগ করা মোটামুটি তুচ্ছ হয়ে ওঠেthis.Left । বিশেষত আপনি দেখতে চান MouseDown, MouseUpএবং MouseMove


আমি অনুভব করেছি যে আমাকে এই ইভেন্টগুলি ব্যবহার করতে হবে তবে আমি সেগুলি নিয়ে কী করব তা নিশ্চিত নই। যখন মাউসডাউন ইভেন্টটি বলা হয়, আমি কীভাবে ফর্মটি সরানোর অনুমতি দেব?
ব্যবহারকারী

1
মাউস ডাউন আপনি একটি পতাকা সেট এবং বেস স্থানাঙ্কগুলি সঞ্চয়। মাউস সরানোর সময় - পতাকাটি সেট করা থাকলে - আপনি নতুন মাউস স্থানাঙ্কগুলির অফসেট দ্বারা শীর্ষ এবং বামটি সামঞ্জস্য করুন। মাউস আপ আপনি পতাকা সাফ করুন।
মারফ

তবুও, আপনি উইন্ডোজ এপিআই দিয়ে মোটামুটি সহজ এটি করতে পারেন যা মাউসের ইভেন্টগুলি পাওয়ার উপর নির্ভর করে না। আপনি যদি ফর্মের একেবারে শীর্ষ প্রান্তে একটি পিক্সেল ধরে ধরে উপরের দিকে টেনে নিয়ে যান তবে এই পদ্ধতিটি ব্যর্থ হবে।
জোয়

4
public Point mouseLocation;
private void frmInstallDevice_MouseDown(object sender, MouseEventArgs e)
{
  mouseLocation = new Point(-e.X, -e.Y);
}

private void frmInstallDevice_MouseMove(object sender, MouseEventArgs e)
{
  if (e.Button == MouseButtons.Left)
  {
    Point mousePos = Control.MousePosition;
    mousePos.Offset(mouseLocation.X, mouseLocation.Y);
    Location = mousePos;
  }
}

এটি আপনার সমস্যার সমাধান করতে পারে ....


আপনি নিয়ন্ত্রণের পরিবর্তে "e.Location" ব্যবহার করতে পারেন ouse মাউস পজিশন
রেজা

4

https://social.msdn.microsoft.com/Forums/vstudio/en-US/d803d869-68e6-46ff-9ff1-fabf78d6393c/how-to-make-a-borderless-form-in-c?forum=csharpgeneral

উপরের লিঙ্কটির এই বিট কোডটি আমার ক্ষেত্রে কৌশলটি করেছে:

protected override void OnMouseDown(MouseEventArgs e)  

{
      base.OnMouseDown(e);
      if (e.Button == MouseButtons.Left)
      {
        this.Capture = false;
        Message msg = Message.Create(this.Handle, 0XA1, new IntPtr(2), IntPtr.Zero);
        this.WndProc(ref msg);
      }
}

4

আমি খুঁজে পাওয়ার সেরা উপায় (অবশ্যই সংশোধিত)

// This adds the event handler for the control
private void AddDrag(Control Control) { Control.MouseDown += new System.Windows.Forms.MouseEventHandler(this.DragForm_MouseDown); }
public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;
[System.Runtime.InteropServices.DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[System.Runtime.InteropServices.DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();

private void DragForm_MouseDown(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        ReleaseCapture();
        SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
        // Checks if Y = 0, if so maximize the form
        if (this.Location.Y == 0) { this.WindowState = FormWindowState.Maximized; }
    }
}

কোনও নিয়ন্ত্রণে টেনে আনার জন্য এটিকে প্রাথমিকভাবে কম্পোনেন্ট () এর পরে সন্নিবেশ করান

AddDrag(NameOfControl);

4

এটা আমার জন্য কাজ করেছে।

    private void Form1_MouseDown(object sender, MouseEventArgs e)
    {
        _mouseLoc = e.Location;
    }

    private void Form1_MouseMove(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
        {
            int dx = e.Location.X - _mouseLoc.X;
            int dy = e.Location.Y - _mouseLoc.Y;
            this.Location = new Point(this.Location.X + dx, this.Location.Y + dy);
        }
    }

স্ট্যাক ওভারফ্লোতে স্বাগতম - সফর , দয়া করে কীভাবে উত্তর দিন তা পরীক্ষা করুন । এই কোডটি কীভাবে ওপ "অরজিনাল পোস্টার" এর সমস্যা সমাধান করে সে সম্পর্কে আপনাকে একটি ব্যাখ্যা সরবরাহ করতে হবে। যে কেউ আপনার উত্তর যাচাই করে তার পক্ষে এটি আরও সহায়ক হবে।
মরিসিও আরিয়াস ওলাভ

2

.NET ফ্রেমওয়ার্ক 4 এর জন্য,

আপনি ব্যবহার করতে পারেন this.DragMove()জন্য MouseDownউপাদান (এই উদাহরণে mainLayout) আপনি টেনে আনার ব্যবহার করছেন ইভেন্ট।

private void mainLayout_MouseDown(object sender, MouseButtonEventArgs e)
{
    this.DragMove();
}

2

সবচেয়ে সহজ উপায়:

প্রথমে লেবেল 1 নামের একটি লেবেল তৈরি করুন। লেবেল 1 এর ইভেন্টগুলি> মাউস ইভেন্টস> লেবেল 1_মাউস এ সরান এবং এগুলি লিখুন:

if (e.Button == MouseButtons.Left){
    Left += e.X;
    Top += e.Y;`
}

2

আমি সীমান্তহীন উইন্ডোজ ফর্মটিকে স্থাবর করার চেষ্টা করছিলাম যাতে একটি ডাব্লুপিএফ এলিমেন্ট হোস্ট নিয়ন্ত্রণ এবং একটি ডাব্লুপিএফ ব্যবহারকারী নিয়ন্ত্রণ রয়েছে।

আমি আমার ডাব্লুপিএফ ব্যবহারকারী নিয়ন্ত্রণে স্ট্যাকপ্যানেল নামে একটি স্ট্যাক প্যানেলটি দিয়ে শেষ করেছি যা সরানোর জন্য ক্লিক করার চেষ্টা করার পক্ষে যুক্তিযুক্ত জিনিস বলে মনে হয়েছিল। জুনম্যাটসের কোডটি চেষ্টা করার সময় আমি মাউসটি আস্তে আস্তে কাজ করেছি, তবে আমি যদি মাউসটি আরও দ্রুত সরিয়ে ফেলতাম তবে মাউস ফর্মটি সরিয়ে ফেলবে এবং ফর্মটি কোথাও মাঝের সরানোতে আটকে থাকবে।

ক্যাপচারমাউস এবং রিলিজক্যাপচারমাউসটি ব্যবহার করে আমার অবস্থার জন্য তার উত্তরে এটির উন্নতি হয়েছে এবং এখনই আমি তাড়াতাড়ি সরিয়ে নিলেও মাউস ফর্মটি সরিয়ে নিয়ে যায় না।

private void StackPanel_MouseDown(object sender, MouseButtonEventArgs e)
{
    _start_point = e.GetPosition(this);
    StackPanel.CaptureMouse();
}

private void StackPanel_MouseUp(object sender, MouseButtonEventArgs e)
{
    StackPanel.ReleaseMouseCapture();
}

private void StackPanel_MouseMove(object sender, MouseEventArgs e)
{
    if (StackPanel.IsMouseCaptured)
    {
        var p = _form.GetMousePositionWindowsForms();
        _form.Location = new System.Drawing.Point((int)(p.X - this._start_point.X), (int)(p.Y - this._start_point.Y));
    }
}

    //Global variables;
    private Point _start_point = new Point(0, 0);

2

যেহেতু কিছু উত্তর শিশু নিয়ন্ত্রণ নিয়ন্ত্রণের জন্য টেনে নেওয়ার অনুমতি দেয় না, তাই আমি একটি সামান্য সহায়ক শ্রেণি তৈরি করেছি। এটি শীর্ষ স্তরের ফর্মটি পাস করা উচিত। চাইলে আরও জেনেরিক করা যায়।

class MouseDragger
{
    private readonly Form _form;
    private Point _mouseDown;

    protected void OnMouseDown(object sender, MouseEventArgs e)
    {
        _mouseDown = e.Location;
    }

    protected void OnMouseMove(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
        {
            int dx = e.Location.X - _mouseDown.X;
            int dy = e.Location.Y - _mouseDown.Y;
            _form.Location = new Point(_form.Location.X + dx, _form.Location.Y + dy);
        }
    }
    public MouseDragger(Form form)
    {
        _form = form;

        MakeDraggable(_form);            
    }

    private void MakeDraggable(Control control)
    {
        var type = control.GetType();
        if (typeof(Button).IsAssignableFrom(type))
        {
            return;
        }

        control.MouseDown += OnMouseDown;
        control.MouseMove += OnMouseMove;

        foreach (Control child in control.Controls)
        {
            MakeDraggable(child);
        }
    }
}

1

এছাড়াও আপনার যদি ডাবলক্লিক করতে এবং আপনার ফর্মটি আরও বড় / ছোট করার প্রয়োজন হয় তবে আপনি প্রথম উত্তরটি ব্যবহার করতে পারেন, একটি গ্লোবাল ইনট ভেরিয়েবল তৈরি করতে পারেন, আপনি যখন টেনে আনার জন্য ব্যবহার করেন সেই উপাদানটিতে প্রতিবার ক্লিক করুন 1 তাহলে variable == 2আপনার ফর্মটি আরও বড় / আরও ছোট করুন। এছাড়াও আপনার তৈরি করতে প্রতি আধ সেকেন্ড বা এক সেকেন্ডের জন্য একটি টাইমার ব্যবহার করুন variable = 0;


1

সংযোজন ক MouseLeftButtonDown উইণ্ডো আমার জন্য কাজ করতে ইভেন্ট হ্যান্ডলার।

স্বয়ংক্রিয়ভাবে উত্পন্ন হওয়ার ইভেন্ট ইভেন্টে, নীচের কোডটি যুক্ত করুন:

base.OnMouseLeftButtonDown(e);
this.DragMove();

1

আমি jay_t55 থেকে আরও একটি পদ্ধতির সাথে সমাধানটি প্রসারিত করছি ToolStrip1_MouseLeaveযা মাউসটি দ্রুত চলে যাওয়ার এবং অঞ্চলটি ছেড়ে যাওয়ার ঘটনা পরিচালনা করে।

private bool mouseDown;
private Point lastLocation;

private void ToolStrip1_MouseDown(object sender, MouseEventArgs e) {
    mouseDown = true;
    lastLocation = e.Location;
}

private void ToolStrip1_MouseMove(object sender, MouseEventArgs e) {
    if (mouseDown) {
        this.Location = new Point(
            (this.Location.X - lastLocation.X) + e.X, (this.Location.Y - lastLocation.Y) + e.Y);

        this.Update();
    }
}

private void ToolStrip1_MouseUp(object sender, MouseEventArgs e) {
    mouseDown = false;
}

private void ToolStrip1_MouseLeave(object sender, EventArgs e) {
    mouseDown = false;
}

0

আমি নিম্নলিখিত এবং প্রেস্টো চেঞ্জ চেষ্টা করেছিলাম, আমার স্বচ্ছ উইন্ডোটি আর স্থির ছিল না তবে সরানো যেতে পারে !! (উপরের সমস্ত জটিল সমাধানগুলি ফেলে দিন ...)

   private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        base.OnMouseLeftButtonDown(e);
        // Begin dragging the window
        this.DragMove();
    }

এই উত্তরটি ডাব্লুপিএফের জন্য, প্রশ্নটি উইনফোর্ডস সম্পর্কিত।
রায়

0

আবেদনপত্র 1(): new Moveable(control1, control2, control3);

ক্লাস:

using System;
using System.Windows.Forms;

class Moveable
{
    public const int WM_NCLBUTTONDOWN = 0xA1;
    public const int HT_CAPTION = 0x2;
    [System.Runtime.InteropServices.DllImportAttribute("user32.dll")]
    public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
    [System.Runtime.InteropServices.DllImportAttribute("user32.dll")]
    public static extern bool ReleaseCapture();
    public Moveable(params Control[] controls)
    {
        foreach (var ctrl in controls)
        {
            ctrl.MouseDown += (s, e) =>
            {
                if (e.Button == MouseButtons.Left)
                {
                    ReleaseCapture();
                    SendMessage(ctrl.FindForm().Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
                    // Checks if Y = 0, if so maximize the form
                    if (ctrl.FindForm().Location.Y == 0) { ctrl.FindForm().WindowState = FormWindowState.Maximized; }
                }
            };
        }
    }
}

0
   [DllImport("user32.DLL", EntryPoint = "ReleaseCapture")]
    private extern static void ReleaseCapture();

    [DllImport("user32.DLL", EntryPoint = "SendMessage")]
    private extern static void SendMessage(System.IntPtr hWnd, int Msg, int wParam, int lParam);
    private void panelTitleBar_MouseDown(object sender, MouseEventArgs e)
    {
        ReleaseCapture();
        SendMessage(this.Handle, 0x112, 0xf012, 0);
    }

আপনার উত্তরটি কিছু ব্যাখ্যা দিয়ে সমর্থন করলে ভাল
লাগবে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.