Crystal Reports Viewerのボタンイメージを変更する
アクセス解析の検索文字列を何とはなしに眺めていたとき
「Crystal Reports Viewer 印刷ボタン 消す」というのがありました。印刷ボタン消したいんだ・・・ ![]()
自分はそんなことあんまり考えたことなかったですが、これってプロパティーで簡単に消せたはずなんですよね。
でも、Crystal Reports Viewerのボタンイメージは独特で、MSやボーランドの処理系が提供しているボタンイメージとはずいぶんかけ離れていて、一つのプログラムの中でイメージの違うボタンが搭載されていて違和感を感じるって事はあります。いかにも、Crystal Reports Viewerを使ってますって感じになっちゃうんですよね。
なので、Crystal Reports Viewerのボタンイメージを任意のものに差し替えるコードを考えてみることに・・・。
これは前に、Crystal Reports Viewerのロゴイメージ(Bussiness Objectsってやつ)を非表示にするって言う記事で書いたコードの応用編です。
private void toolStripButton2_Click(object sender, EventArgs e) { List<System.Windows.Forms.ToolStripButton> btns = new List<ToolStripButton>(); // コントロールオブジェクトに分解 foreach (Control ctl in crystalReportViewer.Controls) { // ツールバーを取得 if (ctl.GetType().Equals(typeof(System.Windows.Forms.ToolStrip))) { System.Windows.Forms.ToolStrip strip = (System.Windows.Forms.ToolStrip)ctl; // ツールバーをアイテムに分解 foreach (ToolStripItem item in strip.Items) { MessageBox.Show(item.GetType().ToString()); //確認用で実際の実行時は不要です。 // ラベルを取得 if (item.GetType().Equals(typeof(System.Windows.Forms.ToolStripButton))) { btns.Add((ToolStripButton)item); } } } } Bitmap bmp = new Bitmap("D:\\logo.jpg"); btns[0].Image = bmp; // ボタンイメージは実際には、DLLとかEXEとかのリソースを読んでくるようにすればいいでしょう。 }
btns[0]はツールバーの一番左側のボタンです。差し替えたいボタンを配列で指定していきます。もちろん全部変えないと意味がないと思いますから、実際にはループで処理したりすることになりますね。
ボタンイメージも実際には、DLLとかEXEファイルとかの中のリソースを読んでくるようにすればいいでしょう。
これでCrystal Reports ViewerにMS風の、というかMSの印刷ボタンを表示することも簡単です。
今までは、Crystal Reports Viewerの印刷ボタンを使わずに、自分でFrom上に新たに印刷ボタンを配置して、必要なコードを書くっていう方法でデザインの統一感を出していたりしましたが、これでだいぶ手抜きできますね。