天天看點

C#窗體屬性FormBordeStyle設定為none後,通過代碼實作窗體滑鼠拖動功能

備注:使用的是visual studio2013版本

1、建立C#窗體應用程式,初始化的程式預設FormBordeStyle屬性為Sizable,修改屬性FormBordeStyle為none

(1)修改前

C#窗體屬性FormBordeStyle設定為none後,通過代碼實作窗體滑鼠拖動功能

(2)修改後

C#窗體屬性FormBordeStyle設定為none後,通過代碼實作窗體滑鼠拖動功能

2、F5調試程式後,此時窗體沒有邊框、關閉縮小按鈕,無法通過滑鼠拖動窗體

C#窗體屬性FormBordeStyle設定為none後,通過代碼實作窗體滑鼠拖動功能

3、輕按兩下Form1窗體,跳轉到背景代碼,添加一個重寫(override)的函數WndProc(ref Message id)

        /// <summary>

        /// 設定FormBorderStyle:FixedDialog後窗體無法移動,重新實作移動窗體代碼

        /// </summary>

        private const int wmParameter = 0x84;

        private const int paramOne = 0x1;

        private const int paramTwo = 0x2;

        protected override void WndProc(ref Message id)

        {

            // 引用消息ID(ref Message ID)

            switch (id.Msg)

            {

                case wmParameter:

                    base.WndProc(ref id);

                    if ((int)id.Result == paramOne)

                        id.Result = (IntPtr)paramTwo;

                    return;

            }

            base.WndProc(ref id);

        }

4、修改代碼之後,F5調試,此時界面如下(窗體已經被我用滑鼠移動)

C#窗體屬性FormBordeStyle設定為none後,通過代碼實作窗體滑鼠拖動功能

5、總結:設定窗體FormBordeStyle為none之後,可以添加panel,進行自定義窗體界面,實作良好的使用者視覺效果。更多技巧,敬請期待。