私はそれを設定しようとしましたが、このとき、私のフォームはまだ高さが大きくなっています。これを行う方法はありますか?
5 に答える
Sizable スタイルでは、ControlBox を false に設定し、テキストに長さ 0 の文字列を割り当てた場合でも、ウィンドウのサイズを特定の最小値未満に変更することはできません。
SizableToolWindow style
代わりにを使用して、この問題を回避することを検討してください。
ControlBox=False にします。そしてあなたはあなたが望むものを手に入れるでしょう。30x30以上のサイズのControlBoxなので、無くても全てのサイズが出来ます。
ここに私のために働く解決策があります。
Form から派生したクラスで、2 つのメソッドをオーバーライドして、適用されるサイズ補正をバイパスし、制限を下回るサイズを設定することを禁止します。
// the *real* width and height of your form, Width and Height are now lying...
internal int CoreWidth { get; private set; }
internal int CoreHeight { get; private set; }
// just for fun :
public new int Width { get { return CoreWidth; } }
public new int Height { get { return CoreHeight; } }
protected override void SetClientSizeCore ( int x, int y )
{
// get wished width and height earlier enough in the chain of calls
CoreWidth = x;
CoreHeight = y;
base.SetClientSizeCore ( x, y );
}
protected override void SetBoundsCore ( int x, int y, int width, int height, BoundsSpecified specified )
{
// don't trust width and height that are provided, use the ones you kept
base.SetBoundsCore ( x, y, CoreWidth, CoreHeight, specified );
}
魔法のように機能しました...私はそれを使用して、画面上のどこにでもポップする何らかの種類の通知ウィンドウを作成しました。これには、あらゆる種類のコントロールが含まれ、あらゆるサイズがあり、制限はありません。
プロパティに設定true
している可能性がありForm.AutoSize
ます。をオフにしAutoSize=false
ます。
問題は境界線スタイルであると推測できます。すべてのフォームには境界線があり、境界線がないことを気にしない場合は変更できません。境界線スタイルをなしに設定すると、フォームの高さを0pxにすることもできます