C#窗口禁止移動的方法


1,窗口屬性中有locked屬性,設置為true。

(在自己進行編碼的時候並沒能找到這個屬性,貌似只能在窗口設計時進行設置,故此方法無可控性)

2,窗口屬性中有FormBorderStyle屬性,設置為none;

或者在代碼中設置:Form1.ActiveForm.FormBorderStyle = FormBorderStyle.None;

此時為無邊框風格,窗口顯灰,不可縮放不可移動。

然后可以考慮對窗口的位置進行記錄,讓其位置不可改變即可:

3,用一個point結構體記錄窗口位置,在窗口的move或change事件里使其位置不變

private Point point;
在相應的位置設置窗口的初始位置
point=this.location
private void Form1_Move(object sender, EventArgs e)
        {
            this.Location = point;
        }
但是這里存在一個很不友好的問題
就是窗口在拖拽之后會瞬間返回原來的位置。

4,通過重載消息處理實現。重寫窗口過程函數(WndProc),處理窗口消息 :
設置一bool變量lockframe

protected override void WndProc(ref   System.Windows.Forms.Message m)
        {
            if (lockframe)
            {
                if (m.Msg != 0x0112 && m.WParam != (IntPtr)0xF012)
                {
                    base.WndProc(ref   m);
                }
            }
            else
                base.WndProc(ref   m);
        }

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM