2009/07/23

[C#]プリンタ出力を行う

このエントリーをはてなブックマークに追加

プリンタへの出力

基本的なことだけれど、何せ滅多に実装しないもので、よく脳内メモリがリセット食らってしまいます。
なので自分用の備忘録。
ソースコード
// using System.Drawing.Printing; // PrintDocument他のため
// using System.Windows.Forms; // PrintDialogのため

public void Print(string title, PrintPageEventHandler PrintPageEvent) {
  // PrintDocumentオブジェクトの作成
  PrintDocument pd = new PrintDocument();
  // PrintPageイベントハンドラの追加
  pd.PrintPage += new PrintPageEventHandler(PrintPageEvent);

  PrintDialog printDialog = new PrintDialog();
  if (printDialog.ShowDialog() == DialogResult.OK) {
      pd.PrinterSettings = printDialog.PrinterSettings; // 印刷設定
      pd.Print(); // 印刷開始
  }
}

// ページ印刷されるときに呼ばれる
private void PrintPageEvent(object sender, PrintPageEventArgs e) {
  Graphics g = e.Graphics;

  // ここに出力内容を実装

  g.Dispose();
}
解説
  • e.Graphicsに出力内容を描画すれば、内容がプリントされて出てきます。
  • 描画領域を取得するには、g.VisibleClipBoundsを遣うのが解りやすいかと。
  • 次のページを出力するにはe.HasMorePages=trueとする。
  • プリンタ出力をキャンセルするには、e.Cancel=trueとしてあげればいいです。

印刷プレビューを作成するなら、Graphicsを引数に取った描画用の関数を共通に利用してあげれば楽ですね。

2009/07/18

GoogleChromeレビュー

このエントリーをはてなブックマークに追加
二ヶ月ほどGoogleChromeに染まってみました。
以前からずっとFireFoxでしたが、とにかく反応の早さがここまで体感できるのかという感想です。これだけ過渡期と思われていたネットのブラウザ環境に早さによって差別化を図ることを打ち出すとは、さすがGoogle。
やっぱり、まず起動が早い。一瞬です。
FireFoxは、初期起動に五秒ほど、そこからページの読み込みが始まっていました。GoogleChromeを体感するまで、もっさりしてるとは感じなかったのに、意識レベルから持っていかれてしまった模様。スペックの低いネットブック環境だったら、なおさらさくさくしてるのが快適さと直結している印象です。

  • いい部分
  1. 起動が早い。一日に何度も閲覧するネット環境に、数秒のラグもなくすぐ接続できるというのはとてもよいです。
  2. FireFoxからの移行もスムーズにエクスポートできた。ブックマークはエクスポート分だけ一緒くたにまとめられてしまいます。
  3. Flashも自動的にプラグインがインストールされて問題なく動作します。
  4. タブを掴んで動かすだけで、別窓に分割/統合できる。意外と便利。

  • どちらとも言えない違い
  1. ブックマークが左側ではなくて上部にでる。ただし違和感はすぐなくなった。ブラウザ画面でも編集可能ですが、ブックマックマネージャーという編集専用画面が用意されているので、雑多なリンクを区分わけするのも難しくありません。
  2. ブラウザから検索するときは、アドレスバーに直接語句を入力して検索する。これも慣れれば違和感はない。
  3. 確認のダイアログがほとんど出現しない。いわゆるOK/キャンセルを聞いてくるあれです。よしあしは分かれるかもしれないけれど思考が滞ることがなく作業ができる。
  4. よくアクセスするページや、追加したブックマークが自動的に集計されてホームのページに表示される。最初は気持ち悪く感じた。遣っていく分に、もはやお任せするのがよいと思い始めました。
  5. プラグインがクラッシュしてもアプリが落ちない。結局落ちたら再起動するので、あんまりメリットを感じなかった(恩恵のあるシーンに出くわさない限り解らないかもしれない)。
  • 気になるところ
  1. キャッシュをためるフォルダを指定できない。RAMメモリなどを使ってHDDへのアクセスを軽減しようとすると、少し面倒。junctionコマンドというものを使用すれあ不可能ではないみたい。(http://ges.tsukuba.ch/e26553.html
  2. プリント時のプレビュー機能がない。
  3. FireFoxのときに使っていたプラグインを再現してほしい。FireBugとか、スクリーンキャプチャとるのとか。

2009/07/06

ASP.NET ボタンを押したときに確認メッセージを表示させる

このエントリーをはてなブックマークに追加
WindowsアプリのようにMessageBox.Showとか呼び出せるのかと、うっかり思ってしまうわけだけれど、当然のようにそんなことはできません。イッチョカミな私めをお許しください。
実現するためには、JavaScriptのalertかconfirmを呼び出すのが簡単らしいです。
真っ当な方法かどうかはともかく、シンプルな表記で参考になりますね。

// Page_Loadに以下のようなコードを追記する
Button1.Attributes["onclick"] = "return confirm('本当に移動しますか?');";
// OKを押すとButton1_Clickイベントが呼ばれる

@IT:.NET TIPS ASP.NETでボタンのクリック時に確認メッセージを表示するには? - C# Webフォーム