サイズ変更できない 800x600 ピクセルの Windows フォームを作成しました。私の問題は、高さがフォームの高さよりも小さい画面解像度でフォームを表示すると、ダイアログの下部が Windows タスク バーで覆われることです。
次の方法を使用して、ユーザーがどこからでもフォームをドラッグできるようにすることで、これを解決しようとしました。
[DllImport("user32.dll")]
static extern IntPtr DefWindowProc(IntPtr hWnd, uint uMsg, UIntPtr wParam, IntPtr lParam);
[DllImport("user32.dll")]
static extern bool ReleaseCapture(IntPtr hwnd);
const uint WM_SYSCOMMAND = 0x112;
const uint MOUSE_MOVE = 0xF012;
public void Drag()
{
DefWindowProc(this.Handle, WM_SYSCOMMAND, (UIntPtr)MOUSE_MOVE, IntPtr.Zero);
}
private void OnMainPanelMouseDown(object sender, MouseEventArgs e)
{
Control ctrl = sender as Control;
ReleaseCapture(ctrl.Handle);
this.Drag(); // put the form into drag mode.
}
フォームをどこにでもドラッグできましたが、今は問題があります。Windows では、画面の上端を超えてウィンドウをドラッグすることはできません。ウィンドウを画面の上部にスナップします。
少なくとも私のフォームでは、このウィンドウの動作を無効にする方法を探しています。