C# 打印不在列表中的页面
我有一个C# 打印不在列表中的页面,c#,printdocument,C#,Printdocument,我有一个int列表,其中包含我不想打印的页面 让我们称之为skipPages 当我试图将实际的打印部分放入if(skipPages.IndexOf(currentPage)时,会为每个页面触发PrintPage事件,因此您所要做的就是跳过列表中的currentPage 您还需要一种机制来检查最后几页是否在跳过列表中,以避免最后打印空白页 List<int> skipPages = new List<int> { 2, 5, 6 }; private void print
int
列表,其中包含我不想打印的页面
让我们称之为skipPages
当我试图将实际的打印部分放入
if(skipPages.IndexOf(currentPage)时,会为每个页面触发PrintPage事件,因此您所要做的就是跳过列表中的currentPage
您还需要一种机制来检查最后几页是否在跳过列表中,以避免最后打印空白页
List<int> skipPages = new List<int> { 2, 5, 6 };
private void printDocument1_BeginPrint(object sender, PrintEventArgs e)
{
currentPage = 0;
}
public void printPage(object sender,System.Drawing.Printing.PrintPageEventArgs e)
{
bool f = false;
int c = currentPage + 1;
//Mechanism to check for the last few pages.
while(skipPages.IndexOf(c)>=0) c++;
if(c>=totalPages) f=false;
else f=true;
while(skipPages.IndexOf(currentPage)>=0) currentPage++; //Actual skipping part.
if(currentPage<totalPage-1) e.HasMorePages = f;
else e.HasMorePages = false;
e.Graphics.DrawString(
currentPage.ToString(),
new Font("Times New Roman",12),
new SolidBrush(Color.Black),
new Point(10,10));
currentPage++;
}
List skipPages=新列表{2,5,6};
私有void printDocument1_BeginPrint(对象发送方,PrintEventArgs e)
{
currentPage=0;
}
public void printPage(对象发送方,System.Drawing.Printing.PrintPageEventArgs e)
{
bool f=假;
int c=当前页面+1;
//检查最后几页的机制。
(IndexOf)(C)> 0(C++);
如果(c>=totalPages)f=false;
否则f=真;
while(skipPages.IndexOf(currentPage)>=0)currentPage++;//实际跳过部分。
如果(currentPageHi PiggyChu515,欢迎来到StackOverflow。你能发布相关代码吗,因为我们没有太多要做的。我想这个链接会很有帮助@Francis:我添加了代码,希望它会有帮助!@Alireza:这个例子教我如何打印一系列页面,这不是我正在尝试的。我尝试跳过页面,可能是第2、5、6页o页r 4,7,12,14,15,19。不过还是要谢谢你!PrintPage事件会针对每一页触发。如果你不绘制任何东西,那么你会得到一个空白页。因此,你必须增加currentPage变量以获得你确实想要打印的页。这使得e.HasMorePages的正确设置有点棘手,正确设置的最好方法是提前进行测试,star正在处理BeginPrint事件。您没有得到正确的结果。想象一下,当第一页或最后一页位于skipPages列表中时会发生什么情况。e.HasMorePages赋值需要在该while循环之后完成,这样您就不会得到额外的空白页。而且您确实也需要BeginPrint事件,这两个事件都可以重置currentPage变量ba选中0并使其超出任何跳过的页面。因此skipPages变量不能是局部变量,请将其移出方法。我更新了它!请检查我是否正确!谢谢!我认为编辑代码段可能更容易。完成。谢谢!但是如果您将while
循环放入BeginPrint
,是否仍然需要d是否将其放入打印页
!?
public void printPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
List<int> skipPages = new List<int> { 2, 5, 6 };
if(currentPage<totalPage && skipPages.IndexOf(currentPage)<0) e.HasMorePages = true;
else e.HasMorePages = false;
e.Graphics.DrawString(
currentPage.ToString(),
new Font("Times New Roman",12),
new SolidBrush(Color.Black),
new Point(10,10));
currentPage++;
}
List<int> skipPages = new List<int> { 2, 5, 6 };
private void printDocument1_BeginPrint(object sender, PrintEventArgs e)
{
currentPage = 0;
}
public void printPage(object sender,System.Drawing.Printing.PrintPageEventArgs e)
{
bool f = false;
int c = currentPage + 1;
//Mechanism to check for the last few pages.
while(skipPages.IndexOf(c)>=0) c++;
if(c>=totalPages) f=false;
else f=true;
while(skipPages.IndexOf(currentPage)>=0) currentPage++; //Actual skipping part.
if(currentPage<totalPage-1) e.HasMorePages = f;
else e.HasMorePages = false;
e.Graphics.DrawString(
currentPage.ToString(),
new Font("Times New Roman",12),
new SolidBrush(Color.Black),
new Point(10,10));
currentPage++;
}