前提・実現したいこと
マルチモニター環境にて、プライマリモニターより左上のモニターでフォームのどの位置にマウスカーソルがあってもサイズ変更ができてしまう。Windowsの不具合の可能性があるが、これを回避したい
発生している問題・エラーメッセージ
(1)c#で2つのフォームを作り、Form1のボタンを押したらForm2が表示されるようにする。
(2)スクリーン座標でX,Y共に負となる座標にForm2を移動する。
(3)クリックすると、Form2のエッジではなくどこでもサイズ変更になる。
該当のソースコード
c#
1namespace WindowsFormsApp1 2{ 3 public partial class Form1 : Form 4 { 5 public Form1() 6 { 7 InitializeComponent(); 8 } 9 10 private void button1_Click(object sender, EventArgs e) 11 { 12 13 Form2 f2 = new Form2(); 14 f2.ShowDialog(); 15 16 } 17 } 18}
c#
1namespace WindowsFormsApp1 2{ 3 public partial class Form2 : Form 4 { 5 public Form2() 6 { 7 InitializeComponent(); 8 } 9 } 10}
試したこと
ShowDialogではなくShowでは再現しませんでした。
また、スクリーン座標X,Yのいずれが正の場合は発生しません。
.net framework 4.8でビルドしても再現しました。
再現率100%です。
補足情報(FW/ツールのバージョンなど)
Windows 10 20H2
Visual c# 2017
.net framework 4.5
###追記
マウスの左ボタンを押しっぱなしにすると、ウインドウの端ではなくウインドウの中でもサイズ変更ができてしまいます。左ボタンを押さなくともマウスカーソルも左上と右下も両側カーソルになりますし、明らかにおかしいです。プライマリモニタでは問題ありません。また、セカンダリモニタをプライマリの右や下としても問題ありません。座標がX,Yとも負の状況はめずらしいのでしょうか。簡単に再現できると思います。ちなみにspy++で確認したところ、ウインドウ右下の端でもないにもかかわらずWM_NCHITEESTはHTBOTTOMRIGHTとなります
###追記2
別のPCで試したところ、同じく100%再現しました。Win10 1903です。
回答1件
あなたの回答
tips
プレビュー