スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

久方ぶりのC#

久しぶりにC#の簡単なアプリをつくった。
入力用テキストボックスにいくつか値をいれると、それが一枚ものの縦書きのレポート形式に整形され印刷できるという形式のものである。いちいち印刷の配置をコードで書くのはめんどーなので、隠しパネルをつくって、そこにさらにグループ別のパネルを載せ、表示用テキストボックスを配置して、フォント及びその大きさを指定してそこに値を表示するようにしてから、次のような二つのメソッドで、印刷するようにした。
(一文が長い!)
 
 private void PrintTextBox(System.Windows.Forms.TextBox tb, int x, int y, System.Drawing.Printing.PrintPageEventArgs e)
        { 
            Font font = tb.Font;
            float lx = (float)(tb.Location.X + x);
            float ly = (float)(tb.Location.Y + y + tb.Height);
            if (tb.TextAlign == HorizontalAlignment.Right)
            {
                lx = lx + (float)tb.Width - e.Graphics.MeasureString(tb.Text, font).Width;
            }
            else if (tb.TextAlign == HorizontalAlignment.Center)
            {
                lx = lx + ((float)tb.Width - e.Graphics.MeasureString(tb.Text, font).Width) / 2.0f;
            } 
            PointF pf = new PointF((float)(panelDraw.Width + headerWidth - ly), (float)lx);
            StringFormat stringFormat = new StringFormat();
            stringFormat.FormatFlags = StringFormatFlags.DirectionVertical;
            e.Graphics.DrawString(tb.Text, font, Brushes.Black, pf, stringFormat);
        }
 
        private void PrintEachPanel(System.Windows.Forms.Panel pl, System.Drawing.Printing.PrintPageEventArgs e)
        {
            foreach (Control c in pl.Controls)
            {
                if (c is TextBox)
                {
                    int lx = pl.Location.X;
                    int ly = pl.Location.Y;
                    PrintTextBox((TextBox)c, lx, ly, e);
                } 
             }
        }
        
 
フォームデザインが直接印刷レイアウトデザインとなるので、簡単な一枚もののレポートを作るには、割と楽な方法ではないかと思う。
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

プロフィール

T GYOUTEN

Author:T GYOUTEN
F#と英単語とフリーソフトと読書に興味があります。
ホームページでフリーソフトも公開しています。どぞ御贔屓に。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
フリーエリア
フリーエリア
blogram投票ボタン
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。