- 題名: Form<Sizable>でWidht=116以下にできない
- 日時: 2004/03/13 0:14:42
- ID: 3031
- この記事の返信元:
- (なし)
- この記事への返信:
- [3034] Re[1]: Form<Sizable>でWidht=116以下にできない2004/03/13 1:18:12
- ツリーを表示
2004/03/13(Sat) 21:01:05 編集(投稿者)かもめさん、こんばんは。深山と申します。 > <Form>の<FormBorderStyle>が<Sizeable>で<Widht=50>にようと思いましたが、 > <116>以下にできません。 > <MinimumSize>は<0,0>です。 > また、その他の<FormBorderStyle>でも、最小<Widht>に規制が在るみたいです。 画面表示を行うに当たり、最低限のエリアは MinimumSize プロパティの値に関わらず 確保されるようです。 # Sizable になってると、タイトルバーのない状態にしてもこの範囲が変わらないのは # 個人的にしっくりこないのですが‥‥それとも 2003 だと違うのかなぁ? Width を 50 にしたいという理由が判りませんのでご要望には添えないかも知れませんけども 単純に見た目だけの問題なのであれば、こちらの Tips の方法で変えることができますよ。 # サイズ変更が可能な状態ですと操作した感じが不自然になってしまうでしょうけど(^_^;) フォームやコントロールの形を変える http://dobon.net/vb/dotnet/form/formregion.html > デザインモードで最小にして調べたところ > > <FormBorderStyle> <最小Widht> <最小Height> > None 3 3 > FixedSingle 3 3 > Fixed3D 3 3 > FixedDialod 3 3 > Sizable 116 27 > FixedTollWindow 3 3 > SizableToolWindow 24 27 # 因みにこちらで試したところ、デザイン時の値は # <FormBorderStyle> <最小Widht> <最小Height> # Sizable 112 27 # SizableToolWindow 8 8 # その他 0 0 # のようになりました。他はさておき、Sizable の微妙な違いはなんだろう‥‥?(ーー;) # あ、0 * 0 のものは実行時には 6 * 6 になったことを追記しておきます。
2004/03/14(Sun) 00:29:07 編集(投稿者)
> No3040
> これに関してはWindowsの画面の設定やOSの違い等にもよります。
> 例えば、WindowsXPで標準のビジュアルスタイルが適用されている場合、
> SystemInformation.MinimumWindowSizeは(123,34)を返します。
> ビジュアルスタイルを適用しない(クラッシックスタイル)場合、(112,24)です。
> ちなみにXPのスキンの種類やタイトルバーのフォント、タイトルのボタンのサイズを
> 変更した場合もこの値に影響します。
あ、なるほど。画面のデザイン等に影響されるんですね。少し考えれば判りそうなものなのに
全然気付きませんでした‥‥(///)
Sugiさん、情報ありがとうございますm(__)m
# ということは SetWindowPos API でやっても‥‥(実験してみる)‥‥やっぱり同じ制限を
# 受けるんですね。
# 先ほど No3037 の
> ※ちなみにいろいろ調べて"SystemInformation.MinimumWindowSize"という
> ものを見つけましたが、すべてのモードで<Widht=116 Height=27>でした。
# を拝見した時に SystemInformation.MinimumWindowSize のヘルプにも目を通したのですけど、
# 理解できてなかったようです(汗)
> No3042
> FixedSingleでFormの端にPanelをつけMouseMoveでFormをリサイズしてみました。
> 結果は、Widht=116以下にできませんでした。
あれ、できませんか?
‥‥うわ、先ほど私 No3038 で嘘言ってますね(大汗)
> # あ、0 * 0 のものは実行時には 6 * 6 になったことを追記しておきます。
このとき FixedToolWindow でだけ試して、他も同じだろうと実行してなかったようです。
申し訳ありませんm(__)m>かもめさん
で、特に問題ないようでしたら、 FixedToolWindow でやってみてはいかがでしょう?
Form に DataGrid を置いて Dock プロパティを Fill にした上で、以下のようなコードで
なんとなくは動作しました。
# ちゃんとした検証はしてませんけど(^_^;)
Private dragFlag As Boolean
Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
If e.X = Me.ClientSize.Width And e.Y = Me.ClientSize.Height Then
Me.Cursor = Cursors.SizeNWSE
ElseIf e.X = Me.ClientSize.Width Then
Me.Cursor = Cursors.SizeWE
ElseIf e.Y = Me.ClientSize.Height Then
Me.Cursor = Cursors.SizeNS
End If
End Sub
Private Sub Form1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.MouseLeave
Me.Cursor = Cursors.Default
End Sub
Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
If Not Me.Cursor.Equals(Cursors.Default) Then
dragFlag = True
End If
End Sub
Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp
If dragFlag Then
Me.Size = New Size(e.X, e.Y)
dragFlag = False
End If
End Sub
■追記
# って、これだとマウスカーソルが途中で変わる上に、カーソルとサイズ変更のされ方が一致しないや(^_^;;;)
分類:[.NET]
VB.NET + XP HOMEで開発しています。
<Form>の<FormBorderStyle>が<Sizeable>で<Widht=50>にようと思いましたが、
<116>以下にできません。
<MinimumSize>は<0,0>です。
また、その他の<FormBorderStyle>でも、最小<Widht>に規制が在るみたいです。
どうしたら、好きなサイズまで縮小できるのでしょうか?