CrystalReportsViewerの「メイン レポート」と書かれたタブを消す
もうひとつ、CrystalReportsネタで・・・。
先のエントリーで「メイン レポート」というタブの表示を任意の文字列にすることができるようになったのですが、ないほうがすっきりしてかっこいいんじゃないかと思うこともあるわけで、非表示にする方法も考えてみました。だいたい、さっきコードを書いたときに見当がついていたのでこれはすぐにできそうです。
調査結果
CrystalReportsViewer内には5つのコントロールがあるようです。
CrystalDecisions.Windows.Forms.PageView. (メインウィンドウ)System.Windows.Forms.Splitter. (グループツリーとメインウィンドウの間の仕切り線)CrystalDecisions.Windows.Forms.ReportGroupTree. (左側に表示されるグループツリー)System.Windows.Forms.ToolStrip. (エクスポートや印刷コマンドボタンのあるツールバー)System.Windows.Forms.StatusBar. (結構邪魔なこともあるステータスバー)
調査に用いたコード
- private void checkReportViewer()
- {
- foreach (object obj in crystalReportViewer.Controls)
- {
- string sControl = obj.GetType().Name.ToString();
- MessageBox.Show(sControl);
- }
- }
IDEに表示されるプロパティーで消せるもの
グループツリー(ReportGroupTree)とステータスバー(StatusBar)とツールバー(ToolStrip)はプロパティーの設定で非表示にできます。メインウィンドウ(PageView)は非表示にしたら意味ないですから、設定できるプロパティーはありません。スプリッター(Splitter)はグループツリーを非表示にすれば当然消えます。
よって、プロパティーで非表示を選択できなくて、なおかつ消したくなるようなオブジェクトはPageView内にある「メイン レポート」というタブとなります。
StatusBarやTab自体を消すためのコード
- private void hideStatusBar()
- {
- CrystalDecisions.Windows.Forms.PageView objPageView = new CrystalDecisions.Windows.Forms.PageView();
- System.Windows.Forms.TabControl objControl = new TabControl();
- foreach(object tab in crystalReportViewer.Controls)
- {
- string strControl = tab.GetType().Name.ToString();
- if(strControl == "StatusBar")
- {
- crystalReportViewer.Controls[4].Visible = false;
- }
- if(strControl == "PageView")
- {
- objPageView = (CrystalDecisions.Windows.Forms.PageView)(tab);
- objControl = (TabControl)(objPageView.Controls[0]);
- objControl.ItemSize = new Size(0, 1);
- objControl.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
- objControl.Appearance = System.Windows.Forms.TabAppearance.Buttons;
- }
- }
- }
実行画面
![]()
左図のように「メイン レポート」と表示されるタブが消えています。

本来の実行画面。
CrystalReportViewerの下部にあるステータスバーも消えています。(クリックで拡大)
環境
- 開発環境:VisualStudio 2005 .NET
- 開発言語:C#
- 帳票ソフト:Crystal Reports XI Release 2
- OS:WindowsXP SP2