フォーム上に表示されている各項目を印刷したいのですが、左揃えの文字は普通に座標指定するだけで問題ないのですが、桁数の違う数字を右揃えで統一して印刷したい場合の方法を教えていただきたく、よろしくお願いいたします。
以前、上記の内容の質問をさせていただきましたところ、String.Formatを使えばよいとのご回答をいただきました。いろいろと調べてみたのですが、実際にどのようにコードに記述すればよいのかがわからずにおります。現在、フォーム上の項目のうち、数値が入力されている項目を印刷するためのコードを次のように記述しています。
'数値の印刷位置
e.Graphics.DrawString(Suuchi1.Text, New Font("MS ゴシック", 12), New SolidBrush(Color.Black), 380, 100)
e.Graphics.DrawString(Suuchi2.Text, New Font("MS ゴシック", 12), New SolidBrush(Color.Black), 380, 150)
e.Graphics.DrawString(Suuchi3.Text, New Font("MS ゴシック", 12), New SolidBrush(Color.Black), 380, 200)
e.Graphics.DrawString(Suuchi4.Text, New Font("MS ゴシック", 12), New SolidBrush(Color.Black), 380, 250)
e.Graphics.DrawString(Suuchi5.Text, New Font("MS ゴシック", 12), New SolidBrush(Color.Black), 380, 300)
'ここまで
これらの数値を右揃えで印刷したい場合、どのようにコードを記述したらよいのか、アドバイスを願います。上記のコードよりももっとスマートなコード記述で、私が望んでいる様な印刷結果を実現できるようでしたら、ご教授のほどよろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
(回答No.1の補足への回答です)
e.Graphics.DrawString(Suuchi1.Text, New Font("MS ゴシック", 12), New SolidBrush(Color.Black), 380, 100)
となっているところを
e.Graphics.DrawString(Suuchi1.Text, New Font("MS ゴシック", 12), New SolidBrush(Color.Black), 380 - e.Graphics.MeasureString(Suuchi1.Text, New Font("MS ゴシック", 12)).Width, 100)
と変更(追加)すると、「座標(380,100)から左詰」が、「座標(380,100)まで右詰」に変わるかと思います。
ありがとうございます。ご回答いただいたコード記述で、私が望んでいたとおりの結果を得ることができました。完璧です。ほんとうにありがとうございます。感謝いたします。
No.3
- 回答日時:
#2>
Suuchi1.Textの中身は、結局文字列ですので、決めた文字数の幅にしてやればいいです。
例えば、
Suuchi1.Textに"1234"が入っていて、10文字の幅を持たせたいという場合
Suuchi1.Textに直接変更すると、内容が変わってしまいますから出力用の変数を用意して
Dim outStr as String
outStr=String.Format("{0,10}",Suuchi1.Text))
e.Graphics.DrawString(outStr, New Font("MS ゴシック", 12), New SolidBrush(Color.Black), 380, 100)
というようにしてやればいいと思います。
この回答への補足
ありがとうございます。たびたびの回答をしていただき感謝しきりです。
現在、数値の印刷結果がセンター揃えになってしまっており、苦戦しております。
何度もご回答をいただき、ありがとうございます。
String.Formatでの対処法、現在なぜかセンター揃えになってしまっているのですが、String.Formatでの右揃えもできるよう、いろいろ試してみます。
とりあえず、現在は回答No.1&No.4様に教えていただいた方法で、私が望むとおりの結果を得ることができました。
回答No.2&No.3様には質問当初からのご回答をいただき、大変感謝しています。ありがとうございます。
No.2
- 回答日時:
String.Formatを使うというのは、要するに、
Suuchi1~5の幅を揃えて、数値の無い部分に空白を埋めるのに使うという意味です。
なので、このまま、等幅フォントで同じ位置から書き出せばいいかと思います。
空白が他の文字と厳密には等幅にならないというようなことでしたら、この方法はうまくないです。
この回答への補足
再度のご回答ありがとうございます。
おっしゃっている内容についてはイメージできるのですが、実際のコード記述がわからずに苦労しているところです。
TextBox1.Textの数値を実際に右寄せで印刷するためのコード記述を教えていただけるとありがたいのですが。。。
No.1
- 回答日時:
若干遠回りになりますが
1. Graphics.MeasureStringを使って「数値を描画した際の全体の横幅」を取得する。
2. 右揃えの座標からその横幅を減じた場所を起点として、Graphics.DrawStringで数値を描画する。
という手順ではいかがでしょうか。
この場合、String.Formatを使用する必要はありません。
この回答への補足
ご回答いただきありがとうございます。おっしゃっている内容、方法論は十分理解できるのですが、それを実際に実現するためのコードの記述がわかりません。
力不足で申し訳ありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで画像を貼り付ける...
-
uwscについて、同一の画像(仮...
-
UWSC画像認識で座標の位置がず...
-
Excel VBAで他アプリケーション...
-
Visual Studio .NET 2003:右揃...
-
クリックした点を中止に拡大・縮小
-
UWSファイルの編集?
-
UWSCのPEEKCOLORについての質問
-
UWSCでPEEKCOLORを使い指定ウィ...
-
マウスイベントが動かない
-
VBからEXCELへ
-
元の比率で画像を切り抜きする方法
-
「ご処理進めて頂きますようお...
-
Excelシート上のマクロを登録し...
-
VBAでループ内で使う変数名を可...
-
エクセルVBAで、MsgBox やInput...
-
CloseとDisposeの違い
-
エクセルで、日付を入力すると...
-
月度は何て読みますか?
-
リョウ・・・量?料?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで画像を貼り付ける...
-
Excel VBAで他アプリケーション...
-
C#で、画像の、指定した座標の...
-
外付ディスプレイで AutoHotkey...
-
VBでクリックイベントを発生さ...
-
uwscについて、同一の画像(仮...
-
UWSCで特定の文字をクリックす...
-
UWSC画像認識で座標の位置がず...
-
マウスイベントが動かない
-
マウスストーカーのようにカー...
-
コントロール名とそのプロパテ...
-
VBAで ScreenToClient を使いたい
-
UWSファイルの編集?
-
UWSCのCHKIMG関数について
-
Visual Studio .NET 2003:右揃...
-
VBでデスクトップ上のアイコン...
-
バナーにリンクを埋め込む方法
-
UWSCのプログラミングついて教...
-
画像の座標取得
-
UWSCでPEEKCOLORを使い指定ウィ...
おすすめ情報