ドラッグ可能なボーダーレス Windows フォームの作成
Windows フォームでボーダーレス フォームをデザインすると、洗練されたモダンな美しさが生まれます。 ただし、これには多くの場合、通常のタイトル バーや枠線を使用せずにフォームを移動可能にするにはどうすればよいかという課題が生じます。この記事では、Windows API を使用したソリューションを提供します。
重要なのは、SendMessage
関数と ReleaseCapture
関数を使用してタイトル バーのクリックをシミュレートすることです。 これらの API 呼び出しは、目に見える境界線がない場合でも、ウィンドウ マネージャーを効果的に騙してドラッグ操作を開始させます。
コードの実装は次のとおりです:
<code class="language-csharp">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); } }</code>
このコードをフォームの MouseDown
イベント ハンドラーに追加すると、フォームのクライアント領域内の任意の場所をクリック アンド ドラッグすることで、枠なしフォームをドラッグして位置を変更できるようになります。 これにより、すっきりとしたボーダーレスなデザインを損なうことなく、必要な機能が提供されます。
以上がWindowsフォームでボーダレスフォームを移動可能にするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。