- - PR -
ListBoxの動作とAnchor
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-03-23 12:21
フォームにフォームを2分割するようにListBoxを2個貼り付けます。
Anchorを設定します。 ListBox1:Top,Bottom,Left ListBox2:Top,Bottom,Right 常に画面を2分していて欲しいので、Resizeイベントを設定します。 ListBox1.Width = Me.Size.Width / 2 ListBox2.Left = Me.Size.Width / 2 + 1 ListBox2については、AnchorにRightを設定しているにかかわらずフォームのサイズを 変化させるとフォームの端に追従していきません。 しかも、高さについてはResizeイベントで何も記入していないのに全く追従しません。 同じ事をButtonでやると高さについては普通の動きですが、やはり右端には追従しません。 これってバグ? | ||||
|
投稿日時: 2007-03-23 13:04
パッと見た感じですが、ListBox2.Left を設定していますが、
ListBox2.Width は設定していないのが気になりました。 例えばフォームのWidthが100から200にリサイズされた場合、 ListBox2.Left が 101、ListBox2.Width は50のままになると思いますので、 右が49不足するんじゃないでしょうか。 もっとも Dock しているのだから追従してくるはずだという考え方もありますが。 その辺りがバグなのか仕様なのかは、情報持っていませんので、私にはわかりません。 本題からは少しずれますが、通常は TableLayoutPanel を使うところだと思います。 | ||||
|
投稿日時: 2007-03-23 17:00
その様なクラスがあるのですか。 調べてみます。 widthについてはまだ許せるのですが、問題は縦方向です。 Buttonコントロールの場合は大丈夫でしたが、Listboxコントロールの場合 フォームを伸ばし縮みさせているとListboxコントロールが縮んでいき、 最終的には無くなってしまいます。 Height=0になっているのでしょう。 これはどう考えてもバグとしか考えられないのですが。 試してみてください。 | ||||
|
投稿日時: 2007-03-23 17:52
試してみました。バグっぽいですね。
ウィンドウリサイズ時に、ウィンドウ右下にマウスカーソルをあわせて 斜め方向のリサイズのカーソルでリサイズするとおかしな動きになります。 垂直方向のリサイズのカーソルでリサイズすれば問題は発生しません。 少し調べてみてわかった条件は以下の通り。 (1) リストボックスのAnchor に Top, Bottom を両方含む。 (2) Resizeイベントハンドラ内でリストボックスのWidthを変更する。(固定値ではダメなようです) (3) Button では発生しない。(それ以外のコントロールは試していません) 以下のコードで再現可能です。 環境はVB2005です。
|
1