C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■87323 / 5階層)  パネルとスプリッターを使った時の処理方法
□投稿者/ 魔界の仮面弁士 (1658回)-(2018/05/10(Thu) 17:24:23)
No87308 (夜叉丸 さん) に返信
> panel1の幅200、panel2の幅300をキープしたかったので、

フォームサイズが (150, 150) になったりすると、最小幅を維持できないので、
Form の MinimumSize もセットしておいた方がよいかと思います。


現状だと、Form サイズが小さすぎた場合、
panel1.Width = 200、panel2.Width = 0 になりえますし、
それよりさらに狭くなると、panel1 に押しやられた splitter1 が
マイナス座標に配置されることになりますよね。


> パネルの表示が壊れたり、Splitter1が消えたりします。
現象を再現できなかったので、状況が読みきれていません…。

> フォームを大きくして、panel1の幅をSplitter1を使って広げた後、
> フォームの右端をドラッグしたままフォームの幅を狭くすると
具体的なサイズが分かると、こちらでも状況を追跡できるかも。

(1) Form の Width を幾つまで広げたのか
(2) panel1 の Width をどこまで広げたのか
(3) その後、Form の Width をどこまで狭めたのか



> 壊れないようにするにはどうすればよいのでしょうか?
もしも再配置が追いついていないようであれば、フォームのリサイズが終了した後で、
ResumeLayout を呼び出してみるのはどうでしょう。
https://dobon.net/vb/dotnet/control/suspendlayout.html


No87314 (にゃるら さん) に返信
> 1. まずSplitContainerを配置し、OrientationをHorizontalにする
> 2. 1で配置したSplitContainerの左側のパネルにSplitContainerを配置

1 が Vertical で、2 が Horizontal では無いでしょうか。

Horizontal (水平線) だと上下配置、
Vertical (垂直線) が左右配置ですよね。



No87316 (夜叉丸 さん) に返信
> SplitContainerを使ってやりたいことができました。

SplitContainer なら、Resize イベント等のコーディングも不要で、
 splitContainer1.SplitterWidth = 10
 splitContainer1.Panel1MinSize = 300
 splitContainer1.Panel2MinSize = 200
をデザイン時に設定しておくだけで済むはずです。

それに Splitter をドラッグする際の視覚効果も、最小サイズ以下にならないよう調整されるので、
ユーザビリティ的にも画面設計効率的にも、SplitContainer の方がお奨めです。

VS2005/VS2008 時代の MSDN を見てみると「SplitContainer コントロール (Windows フォーム)」の
解説において、下記のように記されていますしね。

》メモ:
》 ツールボックスでは、以前のバージョンの Visual Studio で使用されていた Splitter コントロールが、
》 このコントロールに置き換えられました。SplitContainer コントロールの優先度は、Splitter コントロールよりも
》 かなり高くなります。Splitter クラスは、既存のアプリケーションとの互換性を確保するために、引き続き
》 .NET Framework に含まれていますが、新しいプロジェクトに対しては、SplitContainer コントロールを
》 使用することを強くお勧めします。

※ VS2017 では機械翻訳ヘルプになってしまったので分かり難い…。
https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/controls/splitcontainer-control-windows-forms
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[4]: パネルとスプリッターを使った時の処理方法 /夜叉丸 →Re[6]: パネルとスプリッターを使った時の処理方法 /夜叉丸
→Re[6]: パネルとスプリッターを使った時の処理方法 /にゃるら
 
上記関連ツリー

パネルとスプリッターを使った時の処理方法について / 夜叉丸 (18/05/09(Wed) 18:27) #87308
Re[1]: パネルとスプリッターを使った時の処理方法について / WebSurfer (18/05/09(Wed) 18:48) #87309
│└ Re[2]: パネルとスプリッターを使った時の処理方法について / 夜叉丸 (18/05/09(Wed) 18:53) #87310
Re[1]: パネルとスプリッターを使った時の処理方法について / 猫まっしぐら (18/05/09(Wed) 20:52) #87311
  └ Re[2]: パネルとスプリッターを使った時の処理方法 / 夜叉丸 (18/05/10(Thu) 08:08) #87312
    └ Re[3]: パネルとスプリッターを使った時の処理方法 / にゃるら (18/05/10(Thu) 09:39) #87314
      └ Re[4]: パネルとスプリッターを使った時の処理方法 / 夜叉丸 (18/05/10(Thu) 12:31) #87316
        ├ Re[5]: パネルとスプリッターを使った時の処理方法 / 猫まっしぐら (18/05/10(Thu) 13:14) #87319
        └ パネルとスプリッターを使った時の処理方法 / 魔界の仮面弁士 (18/05/10(Thu) 17:24) #87323 ←Now
          ├ Re[6]: パネルとスプリッターを使った時の処理方法 / 夜叉丸 (18/05/10(Thu) 18:39) #87325
          │└ Re[7]: パネルとスプリッターを使った時の処理方法 / 魔界の仮面弁士 (18/05/15(Tue) 11:40) #87359
          │  └ Re[8]: パネルとスプリッターを使った時の処理方法 / 夜叉丸 (18/05/15(Tue) 12:12) #87360 解決済み
          └ Re[6]: パネルとスプリッターを使った時の処理方法 / にゃるら (18/05/10(Thu) 18:10) #87324

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信