您好,我正在学习使用C#VS 2010 EE编程,我正在编写一个应用程序来填写预打印表单.这个表格在不同的坐标中有几个地方.纸上的三个盒子是多行5"W x 2"H盒子.
我已经创建了窗体,窗体上TextBox的每个位置都有一个窗口.
问题是,当在这些多行文本框中输入信息时,我需要知道在纸上留下多少行来输入更多文本,以及何时停止输入,因为PrePrinted框中没有更多可用空间.
我做了很多搜索,但我发现的一切都是关于在屏幕上进行测量,这与纸张上的最终结果不符.
换句话说,我需要知道如何在输入TextBoxes时找出纸张上的字符串尺寸,并将其与PrePrinted表单上的可用空间进行比较,这样我就可以在它经过之前停止纸盒上的底边框.
纸张上的第一个盒子的高度为5英寸,宽度为2英寸,从" new RectangleF(60.0F, 200.0F, 560.0F, 200.0F)" 开始.我明白这些数字是百分之一英寸.
所有这一切,考虑到我不能通过字符数限制TextBoxes,因为并非所有字符占用相同的空间,如H != I; M != l; 等.
预先感谢您的帮助.今天是2011年9月5日,基于您的意见和建议,我已将代码更改为使用Graphics.MeasureString.
这是我现在使用Graphics.MeasureString和只有一个richTextBox的代码:从printDocument1_PrintPage事件中完美地工作,但我不知道如何使它从richTextBox1_TextChanged事件中运行.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Printing;//Needed for the PrintDocument()
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Printing
{
public partial class Form1 : Form
{
private Font printFont1;
string strPrintText;
public Form1()
{
InitializeComponent();
}
private void cmdPrint_Click(object sender, EventArgs e)
{
try …Run Code Online (Sandbox Code Playgroud) 我需要在预打印表单的两面打印DataGridView中的数据,但是:
我将选择要打印的组.
我打算这样做:

如果该MOD的结果为2,那么它将打印Side 1排列,如果该MOD的结果为2,则它将打印Side 2排列.