新規作成したformの最大化ボタンを押すと
400×400のウインドウサイズになるように設定しました。
実行させて、最大化ボタンを押すと400×400のウインドウサイズになりますが、
そのままのサイズでマウスで移動させると、ウィンドウが小さくなります。(起動した時の大きさ)
最大化した状態で移動させたいのですが、どの様にすればいいのでしょうか。
※最大化した時のサイズは、form1プロパティのMaximumSizeに400,400と入れました。
C#
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApp4 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } } }
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答3件
0
最大化はデスクトップのクライアント領域をいっぱいいっぱい使って表示するモードに切り替えるという動作になります
で、Vista以降だとウィンドウタイトルな場所をドラッグしてデスクトップの一番上端にマウスポインタが到達すると波紋が広がります
その状態でドロップすると最大化し、逆に最大化状態でタイトルバーをドラッグすると最大化が解除されます
なので、ドラッグするとサイズが元に戻るというのは最大化が解除されたため起こる現象です
その為、最大化が解除されたイベントハンドラを用意してその時に最大化したときのウィンドウサイズにリサイズする処理を入れればとりあえずは大きさが変わらないようにはできるはずです
また、最大化解除のイベントハンドラ内でウィンドウ上でのマウスポインタの座標と最大化時のウィンドウの座標を保持し、解除後のウィンドウ位置を計算して移動させる必要が出てくるかと思います
投稿2018/07/16 14:12
総合スコア1367
0
ベストアンサー
例えば、フォームサイズ変更時に、WindowStateがMaximized(最大化)の場合に、WindowStateをNormal(通常)に戻し、WindowサイズをMaximumSizeに設定する、という方法はどうでしょう。
これはFormのSizeChangedイベントで捕捉できますが、今回のようなケースだと、通常状態のフォームのサイズが最大化フォームのサイズと同じになってしまう場合があり、この時に意図しない動作が発生するかも知れません。
この場合、WndProcでWM_SIZEメッセージを検知することにより、最大化状態を検知できますので、これを利用したサンプルを作成してみました。
C#
1 2using System.Security.Permissions; 3 4//途中略 5 6 [SecurityPermission(SecurityAction.Demand, 7 Flags = SecurityPermissionFlag.UnmanagedCode)] 8 protected override void WndProc(ref Message m) 9 { 10 const int WM_SIZE = 0x5; 11 const int SIZE_MAXIMIZED = 0x2; 12 13 if (m.Msg == WM_SIZE) 14 { 15 if (m.WParam.ToInt32() == SIZE_MAXIMIZED) 16 { 17 WindowState = FormWindowState.Normal; 18 this.Size = this.MaximumSize; 19 } 20 } 21 22 base.WndProc(ref m); 23 }
もしかしたら、フォームの最大化→通常という動作が一瞬発生するため、ちらつきが出るかも知れません。
投稿2018/08/01 06:05
編集2018/08/01 06:13総合スコア772
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/17 14:30