KingMan 发表于 2017-9-20 16:10:28

TXControl .NET 23 如何添加页码


HeaderFooterCollection hfc = textControl1.Sections.GetItem().HeadersAndFooters;

hfc.Add(HeaderFooterType.Header);

HeaderFooter h = hfc.GetItem(HeaderFooterType.Header);
if (h != null)
{
    h.Selection.Text = "Pageof ";
    h.Selection.Start = 5;
    h.Selection.Length = 0;

    PageNumberField page = new PageNumberField(1, NumberFormat.ArabicNumbers);
    page.Editable = false;
    page.DoubledInputPosition = true;
    h.PageNumberFields.Add(page);

    h.Selection.Start = 9;
    h.Selection.Length = 0;

    PageNumberField totalPages = new PageNumberField();
    totalPages.Editable = false;
    totalPages.DoubledInputPosition = true;
    totalPages.ShowNumberOfPages = true;
    h.PageNumberFields.Add(totalPages);
}


上面代码只是在页眉中添加啦页眉,那如果想在当前光标位子添加页码怎么办,比如我现在关标在页脚处,添加页码自然是添加到页脚处。
这个怎么搞。

Richard.Ma 发表于 2017-9-20 18:10:14

这个问题我这边验证以后明天早上给您答复

Richard.Ma 发表于 2017-9-21 10:27:40

我想您的意思应该是在光标位置添加当前页码,但是这个目前无法采用PageNumberField,该字段只能在页眉页脚用

当前页码可以通过当前位置和 TXTextControl.PageStart 、TXTextControl.PageLength 进行比较,确定页码。然后作为文字插入即可

KingMan 发表于 2017-9-21 14:09:03

本帖最后由 KingMan 于 2017-9-21 14:25 编辑

Richard.Ma 发表于 2017-9-21 10:27
我想您的意思应该是在光标位置添加当前页码,但是这个目前无法采用PageNumberField,该字段只能在页眉页脚 ...
我知道页面只能添加到页面页脚中,我意思是,怎么判断我当前光标是在页眉区域还是页脚区域。
如果当前光标是在页眉区域则添加PageNumberField到页眉区域,如果在页脚则添加PageNumberField到页脚区域。

如下面代码加粗部分,需要一个HeaderFooterType参数,但是我现在想如果当前光标在页脚区域,我则传递HeaderFooterType.Footer.
我怎么知道当前光标是在页眉还是在页脚。

HeaderFooterCollection hfc = textControl1.Sections.GetItem().HeadersAndFooters;

hfc.Add(HeaderFooterType.Header);

HeaderFooter h = hfc.GetItem(HeaderFooterType.Header);
if (h != null)
{
    h.Selection.Text = "Pageof ";
    h.Selection.Start = 5;
    h.Selection.Length = 0;

    PageNumberField page = new PageNumberField(1, NumberFormat.ArabicNumbers);
    page.Editable = false;
    page.DoubledInputPosition = true;
    h.PageNumberFields.Add(page);

    h.Selection.Start = 9;
    h.Selection.Length = 0;

    PageNumberField totalPages = new PageNumberField();
    totalPages.Editable = false;
    totalPages.DoubledInputPosition = true;
    totalPages.ShowNumberOfPages = true;
    h.PageNumberFields.Add(totalPages);
}

Richard.Ma 发表于 2017-9-21 18:27:22

明白您的需求了,目前确实无法判断光标是处于页眉或者页脚,唯一的办法可能只能用光标当前纵向坐标的位置来判断了,这个算是一个迂回的办法。判断Y值较大的话为页脚,这个可能需要你根据页面大小取一个阈值

_textControl.InputPosition.Location.Y;
页: [1]
查看完整版本: TXControl .NET 23 如何添加页码