有没有一种方法可以打印C#Windows窗体应用程序中文本框中给出的份数?
使用我当前的代码,可以按要求的打印数量打印文档,但是在第一次打印后,会出现一个对话框,指出该文档已经打开,我必须打开一个副本。当我打开此副本时,文档会再次打印,但前提是我同意打开副本。有没有一种方法可以多次打印文档,而不必每次都获得文档副本的对话框?
正确填写表格后,我希望将其存储在硬盘驱动器上,并希望它在以前的表格上打印文本框中给出的数字。来自此文本框的值存储在变量intAantalPoorten中。
非常感谢!
关于伯特
CreateWordDocument(@"N:\De wienes\Productieformulieren\Sjablonen\Poortblad.docx", @"N:\De wienes\Productieformulieren\Producties poortbladen\Poortblad " + txtKlantnaam.Text + "-" + txtReferentie.Text + ".docx");
ProcessStartInfo info = new ProcessStartInfo(@"N:\De wienes\Productieformulieren\Producties poortbladen\Poortblad " + txtKlantnaam.Text + "-" + txtReferentie.Text + ".docx");
for (intAAntalPrints = 0; intAAntalPrints <= intAantalPoorten; intAAntalPrints++)
{
info.Verb = "Print";
info.CreateNoWindow = true;
info.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(info);
}
答案 0 :(得分:0)
您可能没有使用最佳的编程模型。您正在执行的操作是依靠Windows Shell打开文档并调用已注册的动词(由本地注册表中的Word定义)。这是完成工作的最原始,功能最差的方法。例如,无法将您要打印的打印机更改为...,或者要更改多少份副本或哪些页面等。
相反,Word(和所有Office应用程序)提供了一个丰富的编程模型。您可以打开文档,并指定所需的份数进行打印。
要访问此编程模型,您需要引用Word的.COM互操作程序集,即:
...以及Office Core互操作程序集:
然后,这只是驱动Word完成您想要的事情的问题。例如:
using System;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1: Form
{
public Form1( )
{
InitializeComponent( );
}
private void button1_Click( object sender, EventArgs e )
{
//--> assumes the textBox1.Text contains the file to open...
var app = new Microsoft.Office.Interop.Word.Application( );
var doc = app.Documents.Open( textBox1.Text, ReadOnly: true );
doc.PrintOut( Copies: 1 );
doc.Close( );
app.Quit( );
}
}
}
请注意,这要求将Word安装在本地计算机上。有关更多信息,请查看the word object model。