TXControl .NET 23 PageNumberField.StartNumber 设置无效
// Get the current section to work with.TXTextControl.Section currentSection = textControl1.Sections.GetItem();
// Get the current header.
TXTextControl.HeaderFooter currentHeader =
currentSection.HeadersAndFooters.GetItem(TXTextControl.HeaderFooterType.Header);
// Check if there is already a header present.
if (currentHeader == null)
{ // no header found in the current section, so we will add one.
currentSection.HeadersAndFooters.Add(TXTextControl.HeaderFooterType.Header);
currentHeader = currentSection.HeadersAndFooters.GetItem(TXTextControl.HeaderFooterType.Header);
}
// Add image to the header with alignment to the right page border.
//currentHeader.Images.Add(new TXTextControl.Image(),
// TXTextControl.HorizontalAlignment.Right,
// 0,
// TXTextControl.ImageInsertionMode.DisplaceText);
// Add some text to the header, left aligned.
currentHeader.Selection.Text = "This is a header with an image aligned to the right.";
TXTextControl.HeaderFooter currentFooter =
currentSection.HeadersAndFooters.GetItem(TXTextControl.HeaderFooterType.Footer);
if (currentFooter == null)
{
currentSection.HeadersAndFooters.Add(TXTextControl.HeaderFooterType.Footer);
currentFooter = currentSection.HeadersAndFooters.GetItem(TXTextControl.HeaderFooterType.Footer);
}
currentFooter.Selection.Text = "Page ";
// Add PageNumberField text field to the footer to display the current page number.
//这里设置其实页码为3,但是界面看到的页码仍然是1开始
PageNumberField pNumberField = new TXTextControl.PageNumberField(3, TXTextControl.NumberFormat.ArabicNumbers);
//pNumberField.StartNumber = 3;
currentFooter.PageNumberFields.Add(pNumberField);
// Add static page count to the footer.
// PLEASE NOTE: You will have to update this number programmatically if the page count changes!
// Best solution would be to do that in the Changed event.
currentFooter.Selection.Text = " of " + textControl1.Pages.ToString();
// Center the footer content.
currentFooter.Selection.ParagraphFormat.Alignment = TXTextControl.HorizontalAlignment.Center;
您好,这个问题我们这两天在24的版本上测试依旧么有解决。这个是产品本身的bug ,目前暂时没有什么办法。我们会将bug对厂商进行反馈。保留本帖 Richard.Ma 发表于 2017-12-8 21:05
您好,这个问题我们这两天在24的版本上测试依旧么有解决。这个是产品本身的bug ,目前暂时没有什么办法。我 ...
本来想通过另外一种方式来解决这个问题的,如在页脚中添加一个文本域,然后循环替换掉该域。但是搞到一半发现搞不了,
因为在页眉或页脚中新增的域,只有一个。
如第一页中页脚中添加文本域A,文本内容有3页,所以,每页一个页脚,共有3个域A。
但是实际在遍历的时候发现,替换域A发现,所有页脚的文本域A的值都为3.指向了同一个域
public int SetTextFieldPageNumber(TextControl txControl,int StartPageNumber)
{
if (txControl == null)
return -1;
PageCollection AllPages = txControl.GetPages();
String sPageFieldName = Convert.ToString("PageNumberField");
if (StartPageNumber <= 0)
StartPageNumber = 1;
int iTemp = 0;
int iLastPage = 0;
HeadFooterActivate(HeaderFooterType.Footer);
foreach (Page pNext in AllPages)
{
foreach (TextField pNextField in pNext.Footer.TextFields)
{
if (pNextField.Name != sPageFieldName)
continue;
int pCurrentPageNumber = GetTextFieldPageNumber(txControl, pNextField);
if (pCurrentPageNumber < 0)
continue;
if (pCurrentPageNumber != iTemp)
{
iLastPage = StartPageNumber;
pNextField.Text = Convert.ToString(StartPageNumber);
StartPageNumber += 1;
iTemp = pCurrentPageNumber;
}
else
pNextField.Text = Convert.ToString(iLastPage);
}
StartPageNumber += 1;
}
HeadFooterDeActivate(HeaderFooterType.Footer);
return 0;
}
我这边也是折腾了好久,这个问题暂时无法解决 您好,这个问题的解决方法如下,重点是先要用Activate方法激活进入header区域,设置后再取消激活
HeaderFooter h = _textControl.Sections.GetItem().HeadersAndFooters.GetItem(HeaderFooterType.Header);
h.Activate();
PageNumberField page = new PageNumberField(3, NumberFormat.ArabicNumbers);
h.PageNumberFields.Add(page);
h.Deactivate();
页:
[1]