2016-04-04 13 views
0

FormBorderStyle == FixedSingleで実行時にウィンドウフォームのサイズを変更するにはどうすればよいですか?プロパティFormBorderStyleでは、このコードフォームサイズを変更する - FormBorderStyle

private void Form1_Deactivate(object sender, EventArgs e) 
{ 
    this.Size = new Size(this.Width, 0); 
} 

を使用して

==かなり、everysingはOKで、フォームは、この enter image description here

ようしかし、場合に見えるプロパティFixedSingleに設定するか、またはフォームの一部がFixedToolWindow示しましたさ。 enter image description here

フォームのこの部分を削除するにはどうすればよいですか?

+2

少し待ってください。なぜこのようなフォームのサイズを変更しようとしていますか? 'Hide()'の何が間違っていますか?あなたは何をしようとしているのですか? – Luaan

+0

Hide()メソッドは既に実現されています。 2番目の方法は、ヘッダ内のフォームをロールアップすることです。 – Cl3r1k

+0

私はあなたが何を言おうとしているのか分かりません。それが無効になっているときに、タイトルだけにフォームを折りたたみたいのですか? – Luaan

答えて

0

簡単に修正できるものではありません。フォームがFormBorderStyle.FixedSingle(およびフレンド)に関連付けられたウィンドウスタイルを取得するとすぐに、クライアント領域が展開されます。私はクライアントの計算を変更しようとしましたが(WM_NCCALCSIZEと友人)、私はそれを小さくすることができた唯一の方法は、クライアント以外の領域も再ペイントすることでした - あなたの正確なケースによっては、実行可能なオプションかもしれない。

MaxSizeMinSizeを適切に設定すると、境界線のスタイルを大きくすることができます。これにより、フォームのクライアント領域を「不可視」に保ちながらサイズ変更ができなくなります。ボーナスポイントの場合、WM_NCHITTESTを処理して、マウスのサイズ変更を完全に避けることができます(実際にはサイズ変更ハンドルは実際にはタイトル/クライアント領域です)。フォームを再度アクティブにすると、古いスタイルと設定が復元されます。

関連する問題