C#Winフォームは、フォームグレーボーダーを除去し、サイズを変更するフォームを達成するために、境界線をドラッグ

1)グレーの境界フォームを削除します。

デザインウィンドウで、FixedSingleのためのフォームFormBorderStyleを設定します。しかし、ウィンドウを設定した後にサイズを変更する境界線をドラッグして達成することはできません。Form.csに次のコードを追加する必要があります。

プライベート CONST  INT WM_NCLBUTTONDBLCLK = 163 ;
         プライベート CONST  INT = WM_NCHITTEST 132 ;
         /// <まとめ> ///  フレームサイズ変更
         /// </要約> /// <PARAM NAME = "M"> </ PARAM>は、保護されたオーバーライド無効のWndProc(REF メッセージM)
        { スイッチ(m.Msg)
            { ケース:WM_NCLBUTTONDBLCLK // WM_NCLBUTTONDBLCLK = 163 <0xA3の>ノックダウン非クライアントエリアマウス左クリックメッセージを、表示フォームが最大化されているかどうかを決定する場合この.MaximizeBox) 
         
         
          
            
                
                     
                    {
                        ベース .WndProc(REFのM);
                         この.Invalidate(); 
                    } 
                    戻りケース WM_NCHITTEST:// WM_NCHITTEST = 132 <0x84の>  
                    塩基 .WndProc(REFの M); // この行が削除された場合、フォームはのMouseMoveを失うことになります。 。その他のイベント
                     // ポイントLPINT新しい新しいポイント=((INT)m.LParam); // あなたはこのニュース、モバイルフォーム、またはスケーリングに対処するために、とにどれを拡張する方法を決定することができるように、マウスの座標を取得します
                     // IF(lpint.Y <30)
                     //     m.Result =(のIntPtr)を0x2; // トル= 2可動HTCAPTION <0x2の> 
                    IF(=のWindowState!FormWindowState.Maximized)
                    { 
                        ポイントP2は = この .PointToClient(MousePositionを); // マウスは、フォームからの相対座標
                         // もちろん可動ホルダはまた、サイズ変更されてもよいこと
                         @ ます。Label1.Text = P2.x + "" + P2 .Y;
                         // HTLEFT = 10 <0xAが>左境界
                        IF(P2.x < 5。 && p2.Y> 5。 && p2.Y <  .Height - 5。 
                            m.Result =(のIntPtr)0xAが他の IF(P2 .Y <5 && p2.X> 5 && p2.X <  .Width - 5 
                            m.Result =(のIntPtr)から0xC 。
                        // HTTOP = 12 <から0xC>上边框                    
                        そう であれば(p2.X < 5 && p2.Y < 5 
                            m.Result =(のIntPtr)0xDの。
                        // HTTOPLEFT = 13 <0xDの> 
                        それ以外の 場合(p2.X> = この .Width - 5 && p2.Y < 5 
                            m.Resultから0xE 。
                        // HTTOPRIGHT = 14 <から0xE>  
                        そう であれば(p2.X>  .Width - 5 && p2.Y> 5 && p2.Y <  .Height - 5 
                            m.Result =(のIntPtr)0xB 。
                        // HTRIGHT = 11 <0xB> 
                        そう であれば(p2.Y> = この .Height - 5 && p2.X> 5 && p2.X <  .Width - 5 
                            M。0xFの;
                        // HTBOTTOM = 15 <0xFの> 
                        そう であれば(p2.X < 5 && p2.Y> = この .Height - 5 
                            m.Result =(のIntPtr)の0x10 。
                        // HTBOTTOMLEFT = 16 <0x10を> 
                        他の 場合(p2.X> この .Width - 5 && p2.Y> = この .Height - 5 
                            m.Result =(のIntPtr)は0x11 ;
                        // HTBOTTOMRIGHT = 17 <0x11を> 

                        // HTBORDER = 18 <0x12を> 

                        //HTMINBUTTON = 8 <0x8という>ボタンを最小限

                        // 。HTMAXBUTTON 9 = <0x9>ボタンを最大化を
                         // HTCLOSE = 20である<0x14に>閉じるボタン
                    }
                     戻りデフォルトベース .WndProc(REFのM);
                     リターン; 
            } 
        }

 

おすすめ

転載: www.cnblogs.com/PER10/p/11541497.html