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

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

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

Re[6]: MDI 親ウィンドウのスクロールバー非表示


(過去ログ 62 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■35755 / inTopicNo.1)  MDI 親ウィンドウのスクロールバー非表示
  
□投稿者/ タケト (1回)-(2009/05/13(Wed) 12:22:51)

分類:[C#] 

お世話になります。
VS2005 C#でMDIを作成しています。
親ウィンドウ内に複数の子ウィドウを
隙間無く表示させたいのですが、
親の下と横にスクロールバーが表示されます。
これを回避して本来スクロールバーが出る部分にも
子ウィンドウの表示エリアとしたいのですが、
可能でしょうか?

よろしくお願いします。

引用返信 編集キー/
■35792 / inTopicNo.2)  Re[1]: MDI 親ウィンドウのスクロールバー非表示
□投稿者/ まどか (608回)-(2009/05/13(Wed) 21:19:18)
スクロールバーが出ているということは、はみ出ているという事実を表しているわけですが
はみ出たとしてもスクロールバーを出したくないということでしょうか?

だとしたら、見えない部分は子ウィンドウをずらすしか方法が無いわけで
せっかく隙間なくきれいに並べたのに。。。ってことになりそうな。
#子ウィンドウの中がAutoScrollっていう手はありますけども。

やるとしたらMDIでもそうでなくてもいいですが、
ウィンドウサイズいっぱい(Dock=Fillとか)のパネルの中に子フォームを表示するとかかな。

引用返信 編集キー/
■35794 / inTopicNo.3)  Re[1]: MDI 親ウィンドウのスクロールバー非表示
□投稿者/ オショウ (179回)-(2009/05/13(Wed) 22:16:51)
No35755 (タケト さん) に返信
> お世話になります。
> VS2005 C#でMDIを作成しています。
> 親ウィンドウ内に複数の子ウィドウを
> 隙間無く表示させたいのですが、

  これは、水平・垂直方向、両方に隙間なくと云うことですか?
  元々・・・

  垂直方向の場合
  Me.LayoutMdi(MdiLayout.TileVertical)

  水平方向の場合
  Me.LayoutMdi(MdiLayout.TileHorizontal)

  これら機能ではないと云うことですか?

> 親の下と横にスクロールバーが表示されます。
> これを回避して本来スクロールバーが出る部分にも
> 子ウィンドウの表示エリアとしたいのですが、
> 可能でしょうか?

  可能です。
  結果的に親ウィンドウの有効な大きさを計算して、並べたい
  子ウィンドウの大きさを算出してやれば・・・当然位置も。

以上。
引用返信 編集キー/
■35802 / inTopicNo.4)  Re[2]: MDI 親ウィンドウのスクロールバー非表示
□投稿者/ タケト (2回)-(2009/05/14(Thu) 08:48:09)
まどか様
オショウ様

ありがとうございます。

>スクロールバーが出ているということは、はみ出ているという事実を表しているわけですが
>はみ出たとしてもスクロールバーを出したくないということでしょうか?

説明不足でした。子ウィンドウのFormBorderStyle を None にしてタイトルバー無し、
サイズ変更不可としています。

結果から申し上げますと、
下記のコードでスクロールバー表示されずに親ウィンドウの下辺に表示されました。
formChild.Height = this.Height / 10;
formChild.Top = this.ClientSize.Height - formChild.Height - 4;
formChild.Left = 0;
formChild.Width = this.ClientSize.Width - 4;

ここで気になっているのが、
Top と Widthを設定する際に -4 しないと スクロールバーが表示されます。
この数値が必要なのは何故でしょうか?



引用返信 編集キー/
■35806 / inTopicNo.5)  Re[3]: MDI 親ウィンドウのスクロールバー非表示
□投稿者/ オショウ (180回)-(2009/05/14(Thu) 09:48:37)
No35802 (タケト さん) に返信
> ここで気になっているのが、
> Top と Widthを設定する際に -4 しないと スクロールバーが表示されます。
> この数値が必要なのは何故でしょうか?

  ウィンドウの枠の幅のサイズかと・・・

※ 調べてませんが多分。

以上。
引用返信 編集キー/
■35808 / inTopicNo.6)  Re[3]: MDI 親ウィンドウのスクロールバー非表示
□投稿者/ biac (96回)-(2009/05/14(Thu) 10:05:57)
biac さんの Web サイト
No35802 (タケト さん) に返信
> 説明不足でした。子ウィンドウのFormBorderStyle を None にしてタイトルバー無し、
> サイズ変更不可としています。
>
> 結果から申し上げますと、
> 下記のコードでスクロールバー表示されずに親ウィンドウの下辺に表示されました。

…ん?

・枠無し
・タイトルバー無し
・親ウィンドウの下辺に接続
・リサイズ/移動 不可

それって、 子ウィンドウじゃないといけないんですか?

親ウィンドウに Panel を追加して、 下にドッキング…
this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom;
…してやると、 お望みのカタチに近いような気がします。
引用返信 編集キー/
■35813 / inTopicNo.7)  Re[4]: MDI 親ウィンドウのスクロールバー非表示
□投稿者/ タケト (3回)-(2009/05/14(Thu) 12:30:58)
オショウさん
biacさん
ありがとうございます。

>ウィンドウの枠の幅のサイズかと・・・

クライアント領域のサイズは、
両端2ピクセルずつを含んでいると頭に入れておきます。

>親ウィンドウに Panel を追加して、 下にドッキング

それも考えたのですが、子ウィンドウは下辺以外にも複数あり
複数の子ウィンドウでクライアント領域を埋めるとなると、
ウィンドウの方が良いかと思いまして・・・



引用返信 編集キー/
■35814 / inTopicNo.8)  Re[5]: MDI 親ウィンドウのスクロールバー非表示
□投稿者/ 渋木宏明(ひどり) (1153回)-(2009/05/14(Thu) 13:23:26)
渋木宏明(ひどり) さんの Web サイト
> 両端2ピクセルずつを含んでいると頭に入れておきます。

「常に」じゃないですよ。

そのコントロール(ウィンドウ)のスタイル設定や、OS のテーマ設定などで変わる可能性があります。

> それも考えたのですが、子ウィンドウは下辺以外にも複数あり
> 複数の子ウィンドウでクライアント領域を埋めるとなると、
> ウィンドウの方が良いかと思いまして・・・

どういう効果を狙っているのかよくわかりませんが、ドッキングペインのようなものを作りたいってことですか?

であれば、有償・無償のライブラリが各種で回っているので、そういうの使った方が早くて確実な気がします。
引用返信 編集キー/
■35841 / inTopicNo.9)  Re[6]: MDI 親ウィンドウのスクロールバー非表示
□投稿者/ タケト (4回)-(2009/05/14(Thu) 21:05:00)
>どういう効果を狙っているのかよくわかりませんが、ドッキングペインのようなものを作りたいってことですか?
>であれば、有償・無償のライブラリが各種で回っているので、そういうの使った方が早くて確実な気がします。

要件を詰めて、再度検討してみます。
皆様、ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -