[.NET2.0] ToolStripContainerの中央のパネルのサイズを一定に保ちたい

このQ&Aのポイント
  • Visual Studio 2005と.NET Framework 2.0を使用している場合、ToolStripContainer内のToolStripの状態に関係なく中央のパネルのサイズを一定に保ちたいです。
  • ToolStripContainerのContentPanelプロパティから中央のパネルのサイズを取得し、Formの構築時に実行することを試みましたが効果がありませんでした。
  • 解決策をご存知の方は、教えていただけますか?
回答を見る
  • ベストアンサー

[.NET2.0] ToolStripContainerの中央のパネルのサイズを一定に保ちたい

Visual Studio 2005と.NET Framework 2.0を使っています。 ToolStripContainer内のToolStripの状態によらず中央のパネルのサイズを一定に保ちたいのですが、どうすればよいのでしょうか。 以下は私の試行です。 中央のパネルはToolStripContainerのContentPanelプロパティから取得できるので、次のようにしました。 (ToolStripContainerはForm上に配置され、名前はToolStripContainer1です。) [C#] ToolStripContainer1.ContentPanel.Size = new Size(640, 480); サイズを一定に保つことは置いておいて、まずは、これをFormの構築時に実行するようにしてみました。 しかし、このように記述し、実行してもToolStripContainer1には何の効果もありません。 中央のパネルのサイズを設定するという初歩で、壁に当たっております。 解決法をご存知の方、御回答をお願いいたします。

noname#16934
noname#16934

質問者が選んだベストアンサー

  • ベストアンサー
  • crosis
  • ベストアンサー率66% (14/21)
回答No.1

中央のパネルのサイズっていうのは、親(?)にあたるであろうtoolStripContainer1のSizeでいいんじゃないでしょうか? この先の説明は、面倒なので全部Heightについてですが、Widthも同じと考えてください。 TopToolStripPanelとか、BottomToolStrip・・・が表示されている状態においては、高さなら toolStripContainer1.Height - toolStripContainer1.TopToolStripPanel.Height - toolStripContainer1.BottomStripPanel.Height がContentPanel.Heightになるみたいですから、 toolStripContainer1についてSizeを設定してやればいいと思いますょ。 どうも(Top,Bottom)toolStripPanelは、その上にToolStripとかMenuStripを乗せない限りは、非表示ということで、Heightが0になっていますから、特別乗せていないなら気にする必要はないんだと思います。仮に何か乗せている状態で高さを480にしたいとしたら、 toolStripContainer1.Height = 480 + toolStripContainer1.TopToolStripPanel.Height + toolStripContainer1.BottomToolStripPanel.Height; としてやれば、中央のパネルサイズは480になってると思います。 ・・・なんかよぅ分からん説明でスマソ

noname#16934
質問者

お礼

ありがとうございます! 足し算によってToolStripContainerの幅や高さを決めるという方法ですね。試してみたいと思います。 やはり、ContentPanelのSizeプロパティに新しいSizeを設定するといった簡単な方法では解決できないのでしょうか。 中央のパネルのサイズを一定に保つということで、 残る問題はToolStripPanel上のToolStrip等が 他のToolStripPanel上に移動されたことを検知し、 中央のパネルのサイズを調整する必要があることです。Layoutイベントなどを試してみたいと思います。

関連するQ&A

  • VC#2010 splitterで分けたpanel

    こんにちは。 FormにPanelを二つ配置し、Splitterで上下に区切っている状態で、上側のパネルのClientRectangleを取得しているのですが、それの高さが思ったとおりのものがもらえなくて困っています。 説明用に画像を添付しております。 手順としましては、panel1とpanel2をまずフォームに配置し、panel2をFormのBottomにDockします。 次いで、splitterをフォームに配置し、splitterをFormのBottomにDockします。 そして、panel1をFormにFillとしてDockしています。 この時あるメソッドからpanel1を参照し、panel1.ClientRectangle.Size.Heightが、panel1とpanel2のHeightを足した値になってしまっています。 panel1はFormにFillでDockされているから、という仕様なのでしょうか?

  • C# 多くのコントロールを持つPanelの作り方?

    FormにPanelを作ります Panelの面積を10cm×10cmと仮定します このPanelに100ケのRadio釦を貼り付けます ですからPanelが必要とする面積は相当なものになります 10ケ程度は上から下に順次貼り付けられますが、11ヶ目からは表示されているPanelの下限になってしまいPanelの枠内に入れられません ・Panelの下限を下にドラッグして下方向に延しましたがVisual Studio自体の画面デザインのサイズまでしか拡がりません ・AutoScrollをTrueにしてみましたが、FormデザインのPanel自体にはスクロールバーは表示されませんので、11ヶ目以降の貼付けスペースを見出せません どのようにしたら表示されているPanelの下限よりも遥か下までコントロールを貼り付けることが出来ますか? 色々と操作してみましたが分かりません? この操作方法をご存知でしたらお教え願います

  • モジュールからの呼び出し - Panel内こんとろ~る

    モジュールからあるフォームのラベルのテキストを変更する下記のようなプログラムがありました。 Dim Frm as New Form Dim i as integer(カウンタ用変数) Frm = New_Frm(変更するオブジェクトのフォーム名) i=0 for i=0 to 3 Frm.controls("Label" & i).text= i next このようなプログラムがあり、見た目・配置変更が容易という都合上でLabel1~3をPanel上に配置し実行したところエラーが起きました。 この場合、どう書き換えればいいのでしょうか?

  • .NET 内のコードへステップ実行する方法

    Visual Studio 2015 Community を利用しています。 Visual Studio 2015 Community を利用して .NET Framework 内部のコードへステップ実行できるようにしたいのですが、やり方がわかりません。 以下の URL に載っているようなことを 2015 でも可能にしたいのですが、2008 とは色々と設定が違うみたいでやり方がわかりません。 どこをどのように設定すればいいのでしょうか? Visual Studio 2008で見る.NET Frameworkのソースコード http://www.atmarkit.co.jp/fdotnet/insiderseye/20080222sourcecode/sourcecode.html

  • 可変幅でabsolute指定で中央配置できません

    可変幅でabsoluteを指定すると中央配置できなくなります。 ブラウザの幅に合わせて中身のサイズも合わせて伸縮するサイトを構築したくて色々試しているのですが、どうしてもうまくできません。 どのように指定したらできるのでしょうか?困っています、どなたかお助けください。 例えば画像が固定のサイズであれば  width:500px; position:absolute; left:50%; margin-left:-250px; 見たいな形で中央配置できるのですが、可変の場合、、伸縮させたいので、横幅は常に500pxとはなりません。 よろしくお願い致します。

    • ベストアンサー
    • CSS
  • Visual Studio > ユーザ配布ファイル

    これまでVisual Studioのソフトを作成したことがなかったのですが、Visual Studio Community Editionが利用可能となった機会に、作成をしてみようかと思います。 Visual Studioでは.NET Framework上に.NETプログラムを作るという認識なのですが、ファイル配布の点でよくわかりません。 以前は、Borland c++ builderなどでソフトを作っていたことがあり、その時は.exeファイル単体で配布できるようでした。Visual Studioでも同様な方法で (1つの実行 .exeファイルとして )配布することは可能でしょうか? あるいは、.NETフレームワーク関連のファイルインストールをソフト利用者にしていただく必要があるのでしょうか? または、インストーラの形を用意する必要があるのでしょうか?

  • C#でフォームの中にフォームを貼り付けたい

    C#(Visual Studio2005)でフォームの中にフォームを貼り付けたいのですが そういう事は可能でしょうか。 MDIではなく配置したいのです。 (MFCならCWndの中にCWndを作るように) private void Form1_Load(object sender, EventArgs e){ Form2 form2 = new Form2(); form2.parent = this; form2.top = 10; form2.left = 10; form2.Show; } これをやると ※「トップレベルのコントロールは追加できません。」という例外が発生します。 やりたいことは、フォームの中の子ウインドウを状況によってきりかえたいのですが。 宜しくお願い致します。

  • visual studio 2010でビルドした実行ファイルは

    visual studio 2010でビルドした実行ファイルは アセンブリ 暗号化をする必要があるのでしょうか? ※コードは解析されたくありません。 Spices.NET 5Jみたいなのが売っていますがちょっと高いです。 1万円未満でvisual studio 2010で使えるものはないでしょうか 変数名と関数名と文字列などは、暗号化したいです。 .NET Framework 4.0を利用します

  • .NET Framework 1.0 は削除出来ますか?

     先日Visual Studio 2010のβ1版を入れようとしたのですが、それに必須な.NET Framework 4.0β1のインストール段階で、「.NET Framework 1.0があると駄目だ」というエラーが出ました。  1.0を削除しようかとも思ったのですが、コントロールパネルで見ると、使用頻度は中だったので、思いとどまりました。  .NET Frameworkは1.1~3.5までインストールしています。この状態で1.0を削除しても大丈夫でしょうか?。できそうな気もしますが、怖いし自信がないので、どなたか教えて下さい。 OSは、XP Professional SP3,Officeは、2003 Professional SP3です。

  • C#で3Dボタンを作成する方法

    Visual C# にて、「Windowsフォームアプリケーション(.NET Framework)」プロジェクトを作成し、フォーム上にボタンとテキストボックスを配置し実行すると、添付の図1のようになりますが、このボタンをクラシックスタイルの3Dボタン(図2のように、ボタンの上辺と左辺が明るく、下辺と右辺が暗くなっているボタンです)のようにするにはどうすればいいですか? ボタンのプロパティのうちのどれかを弄れば出来そうな気がするのですが、それらしいものが見当たりません。単に見つけられていないだけでしょうか。 よろしくお願いします。

専門家に質問してみよう