C# 打印机参数可不可以自己新建窗体设置 在c#中,自己建一个窗体,设置一些打印机的参数,比如说打印份数,写到textbox里面,然后传给printdialog组件中的份数,而且不显示printdialog,点击自己窗体上的“打印”,然后打印出来,当然这里只是一个参数,还有许多参数要设置,所以想请教高人,看怎么解决这个问题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 当然可以自定义一个打印参数设置窗体,向其传PrintSetting即可 手头的一个项目中的应用:public partial class FrmPrint : Form { /// <summary> /// 打印信息 /// </summary> private PrinterSettings m_printerSettings; /// <summary> /// 双面打印 /// </summary> private bool m_duplex; public FrmPrint(PrinterSettings printerSettings) { InitializeComponent(); this.m_printerSettings = printerSettings; } private void FrmPrint_Load(object sender, EventArgs e) { if (this.m_printerSettings != null && this.m_printerSettings.IsValid) { ToolTip toolTip = new ToolTip(); toolTip.SetToolTip(chkDuplex, "说明:\r\n请根据具体打印机型号及功能,确定是否选择该项!"); this.lblPrintName.Text = this.m_printerSettings.PrinterName; //设置起始和终止页初始值 this.numPageFrom.Minimum = this.m_printerSettings.MinimumPage; this.numPageFrom.Maximum = this.m_printerSettings.MaximumPage; this.numPageFrom.Value = this.m_printerSettings.MinimumPage; this.numPageTo.Minimum = this.m_printerSettings.MinimumPage; this.numPageTo.Maximum = this.m_printerSettings.MaximumPage; this.numPageTo.Value = this.m_printerSettings.MaximumPage; } else { string msg = String.Format("由于当前打印机安装有问题,无法打印。\r\n\"{0}\"请检查打印机设置或重新选择打印机。", this.m_printerSettings.PrinterName); MessageBox.Show(msg, "打印"); this.DialogResult = DialogResult.Cancel; this.Close(); } } /// <summary> /// 打印 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnOk_Click(object sender, EventArgs e) { if (rbtnSomePages.Checked) { this.m_printerSettings.PrintRange = PrintRange.SomePages; int pageFrom, pageTo; if (int.TryParse(numPageFrom.Text, out pageFrom) && int.TryParse(numPageTo.Text, out pageTo)) { if (pageFrom > pageTo) { int tmp; tmp = pageFrom; pageFrom = pageTo; pageTo = tmp; } this.m_printerSettings.FromPage = pageFrom; this.m_printerSettings.ToPage = pageTo; } else { MessageBox.Show("打印异常,选择的打印起始或结束页码无效!"); this.DialogResult = DialogResult.Cancel; this.Close(); } } else if (rbtnAll.Checked) { this.m_printerSettings.PrintRange = PrintRange.AllPages; } else if (rbtnCurrent.Checked) { this.m_printerSettings.PrintRange = PrintRange.Selection; } this.DialogResult = DialogResult.OK; } /// <summary> /// 打印指定页 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void rbtnSomePages_CheckedChanged(object sender, EventArgs e) { RadioButton rbtn = sender as RadioButton; if (rbtn.Checked) { this.numPageTo.Enabled = true; this.numPageFrom.Enabled = true; } else { this.numPageFrom.Enabled = false; this.numPageTo.Enabled = false; } } private void chkDuplex_CheckedChanged(object sender, EventArgs e) { this.m_duplex = chkDuplex.Checked; } public PrinterSettings PrinterSettings { get { return this.m_printerSettings; } set { this.m_printerSettings = value; } } /// <summary> /// 获取或设置是否双面打印 /// </summary> public bool Duplex { get { return this.m_duplex; } set { this.m_duplex = value; } } } 定义一个PrinterSettings对象,给它赋值。后打印时用这个PrinterSettings设置 不好意思.NET Framework 类库 PrinterSettings 成员请参见 PrinterSettings 类 | System.Drawing.Printing 命名空间 | C++ 托管扩展编程 PrinterSettings 概述 公共构造函数 PrinterSettings 构造函数 初始化 PrinterSettings 类的新实例。 公共属性 CanDuplex 获取指示打印机是否支持双面打印的值。 Collate 获取或设置一个值,该值指示打印文档是否逐份打印。 Copies 获取或设置要打印的文档份数。 DefaultPageSettings 获取此打印机的默认页设置。 Duplex 获取或设置双面打印的打印机设置。 FromPage 获取或设置要打印的第一页的页码。 InstalledPrinters 获取安装在计算机上所有打印机的名称。 IsDefaultPrinter 获取一个值,该值指示 PrinterName 属性是否指定默认打印机(用户显式设置 PrinterName 的情况除外)。 IsPlotter 获取指示该打印机是否是绘图仪的值。 IsValid 获取一个值,该值指示 PrinterName 属性是否指定了有效的打印机。 LandscapeAngle 获取旋转纵向方向以生成横向方向的角度,以度为单位。 MaximumCopies 获取打印机允许一次打印的最多份数。 MaximumPage 获取或设置可以在 PrintDialog 中选定的最大的 FromPage 或 ToPage。 MinimumPage 获取或设置可以在 PrintDialog 中选定的最小的 FromPage 或 ToPage。 PaperSizes 获取该打印机支持的纸张大小。 PaperSources 获取打印机上可用的纸张来源纸盒。 PrinterName 获取或设置要使用的打印机的名称。 PrinterResolutions 获取该打印机支持的所有分辨率。 PrintRange 获取或设置用户已指定要打印的页码。 PrintToFile 获取或设置一个值,该值指示打印输出是否发送到文件,而不发送到端口。 SupportsColor 获取指示该打印机是否支持彩色打印的值。 ToPage 获取或设置要打印的最后一页的页码。 公共方法 Clone 创建此 PrinterSettings 对象的一个副本。 CreateMeasurementGraphics 返回 Graphics 对象,该对象包含创建 PrintDocument 时有用的打印机信息,例如,打印机的 TextMetric 对象。 Equals(从 Object 继承) 已重载。确定两个 Object 实例是否相等。 GetHashCode(从 Object 继承) 用作特定类型的哈希函数,适合在哈希算法和数据结构(如哈希表)中使用。 GetHdevmode 已重载。创建与打印机设置相对应的 DEVMODE 结构的句柄。 GetHdevnames 创建与打印机设置相对应的 DEVNAMES 结构的句柄。 GetType(从 Object 继承) 获取当前实例的 Type。 SetHdevmode 将相关信息从给定句柄复制到 PrinterSettings 中。 SetHdevnames 将相关信息从给定句柄复制到 PrinterSettings 中。 ToString 已重写。参见 Object.ToString。 受保护的方法 Finalize(从 Object 继承) 已重写。允许 Object 在“垃圾回收”回收 Object 之前尝试释放资源并执行其他清理操作。 在 C# 和 C++ 中,使用析构函数语法来表示终结程序。 MemberwiseClone(从 Object 继承) 创建当前 Object 的浅表副本。 请参见 PrinterSettings 类 | System.Drawing.Printing 命名空间 | C++ 托管扩展编程 字符拼接最高效方式? http 特殊字符怎么转换? =============== 窗体的分割 可不可以设置和获取浮点值得鼠标位置? webservice调用引用时报错 一个正则表达式的问题 在C#中直接打印一串字符,用什么代码实现? DataSet中设置一个自增加的主键! 请问如何将VS.NET.2003架构跟WinForm程序一起打包呀?? C# treeview控件中选中一个Node节点后,点击button按钮实现节点的连续上移或下移(每移动一次点击一下) windows service 访问远程服务器上的数据库(非本机) DataAdapter和DataSet操作数据库问题
{
/// <summary>
/// 打印信息
/// </summary>
private PrinterSettings m_printerSettings;
/// <summary>
/// 双面打印
/// </summary>
private bool m_duplex; public FrmPrint(PrinterSettings printerSettings)
{
InitializeComponent();
this.m_printerSettings = printerSettings;
} private void FrmPrint_Load(object sender, EventArgs e)
{
if (this.m_printerSettings != null && this.m_printerSettings.IsValid)
{
ToolTip toolTip = new ToolTip();
toolTip.SetToolTip(chkDuplex, "说明:\r\n请根据具体打印机型号及功能,确定是否选择该项!"); this.lblPrintName.Text = this.m_printerSettings.PrinterName;
//设置起始和终止页初始值
this.numPageFrom.Minimum = this.m_printerSettings.MinimumPage;
this.numPageFrom.Maximum = this.m_printerSettings.MaximumPage;
this.numPageFrom.Value = this.m_printerSettings.MinimumPage; this.numPageTo.Minimum = this.m_printerSettings.MinimumPage;
this.numPageTo.Maximum = this.m_printerSettings.MaximumPage;
this.numPageTo.Value = this.m_printerSettings.MaximumPage;
}
else
{
string msg = String.Format("由于当前打印机安装有问题,无法打印。\r\n\"{0}\"请检查打印机设置或重新选择打印机。", this.m_printerSettings.PrinterName);
MessageBox.Show(msg, "打印");
this.DialogResult = DialogResult.Cancel;
this.Close();
}
} /// <summary>
/// 打印
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnOk_Click(object sender, EventArgs e)
{
if (rbtnSomePages.Checked)
{
this.m_printerSettings.PrintRange = PrintRange.SomePages;
int pageFrom, pageTo;
if (int.TryParse(numPageFrom.Text, out pageFrom) &&
int.TryParse(numPageTo.Text, out pageTo))
{
if (pageFrom > pageTo)
{
int tmp;
tmp = pageFrom;
pageFrom = pageTo;
pageTo = tmp;
}
this.m_printerSettings.FromPage = pageFrom;
this.m_printerSettings.ToPage = pageTo;
}
else
{
MessageBox.Show("打印异常,选择的打印起始或结束页码无效!");
this.DialogResult = DialogResult.Cancel;
this.Close();
}
}
else if (rbtnAll.Checked)
{
this.m_printerSettings.PrintRange = PrintRange.AllPages;
}
else if (rbtnCurrent.Checked)
{
this.m_printerSettings.PrintRange = PrintRange.Selection;
}
this.DialogResult = DialogResult.OK;
} /// <summary>
/// 打印指定页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void rbtnSomePages_CheckedChanged(object sender, EventArgs e)
{
RadioButton rbtn = sender as RadioButton;
if (rbtn.Checked)
{
this.numPageTo.Enabled = true;
this.numPageFrom.Enabled = true;
}
else
{
this.numPageFrom.Enabled = false;
this.numPageTo.Enabled = false;
}
} private void chkDuplex_CheckedChanged(object sender, EventArgs e)
{
this.m_duplex = chkDuplex.Checked;
}
public PrinterSettings PrinterSettings
{
get { return this.m_printerSettings; }
set { this.m_printerSettings = value; }
} /// <summary>
/// 获取或设置是否双面打印
/// </summary>
public bool Duplex
{
get { return this.m_duplex; }
set { this.m_duplex = value; }
}
}
.NET Framework 类库 PrinterSettings 成员请参见
PrinterSettings 类 | System.Drawing.Printing 命名空间 | C++ 托管扩展编程
PrinterSettings 概述 公共构造函数
PrinterSettings 构造函数 初始化 PrinterSettings 类的新实例。 公共属性
CanDuplex 获取指示打印机是否支持双面打印的值。
Collate 获取或设置一个值,该值指示打印文档是否逐份打印。
Copies 获取或设置要打印的文档份数。
DefaultPageSettings 获取此打印机的默认页设置。
Duplex 获取或设置双面打印的打印机设置。
FromPage 获取或设置要打印的第一页的页码。
InstalledPrinters 获取安装在计算机上所有打印机的名称。
IsDefaultPrinter 获取一个值,该值指示 PrinterName 属性是否指定默认打印机(用户显式设置 PrinterName 的情况除外)。
IsPlotter 获取指示该打印机是否是绘图仪的值。
IsValid 获取一个值,该值指示 PrinterName 属性是否指定了有效的打印机。
LandscapeAngle 获取旋转纵向方向以生成横向方向的角度,以度为单位。
MaximumCopies 获取打印机允许一次打印的最多份数。
MaximumPage 获取或设置可以在 PrintDialog 中选定的最大的 FromPage 或 ToPage。
MinimumPage 获取或设置可以在 PrintDialog 中选定的最小的 FromPage 或 ToPage。
PaperSizes 获取该打印机支持的纸张大小。
PaperSources 获取打印机上可用的纸张来源纸盒。
PrinterName 获取或设置要使用的打印机的名称。
PrinterResolutions 获取该打印机支持的所有分辨率。
PrintRange 获取或设置用户已指定要打印的页码。
PrintToFile 获取或设置一个值,该值指示打印输出是否发送到文件,而不发送到端口。
SupportsColor 获取指示该打印机是否支持彩色打印的值。
ToPage 获取或设置要打印的最后一页的页码。 公共方法
Clone 创建此 PrinterSettings 对象的一个副本。
CreateMeasurementGraphics 返回 Graphics 对象,该对象包含创建 PrintDocument 时有用的打印机信息,例如,打印机的 TextMetric 对象。
Equals(从 Object 继承) 已重载。确定两个 Object 实例是否相等。
GetHashCode(从 Object 继承) 用作特定类型的哈希函数,适合在哈希算法和数据结构(如哈希表)中使用。
GetHdevmode 已重载。创建与打印机设置相对应的 DEVMODE 结构的句柄。
GetHdevnames 创建与打印机设置相对应的 DEVNAMES 结构的句柄。
GetType(从 Object 继承) 获取当前实例的 Type。
SetHdevmode 将相关信息从给定句柄复制到 PrinterSettings 中。
SetHdevnames 将相关信息从给定句柄复制到 PrinterSettings 中。
ToString 已重写。参见 Object.ToString。 受保护的方法
Finalize(从 Object 继承) 已重写。允许 Object 在“垃圾回收”回收 Object 之前尝试释放资源并执行其他清理操作。
在 C# 和 C++ 中,使用析构函数语法来表示终结程序。
MemberwiseClone(从 Object 继承) 创建当前 Object 的浅表副本。 请参见
PrinterSettings 类 | System.Drawing.Printing 命名空间 | C++ 托管扩展编程