TX TextControl 中通过代码插入页号

发布时间:2013/08/31 00:08 发布者:jian

返回博客中心

TX TextControl产品支持丰富的文档样式编辑功能,比如:字体样式,段落样式,节样式,分栏,插入图片,表格等,本文主要是文档中插入页号的实现方法,代码如下:

        private void Form1_Load(object sender, EventArgs e)
        {
            InsertPageNumber(HeaderFooterType.Footer);
        }
        /// <summary>
        /// 在当前节中插入页号
        /// </summary>
        /// <param name="headerFooterType">仅限于页眉和页脚</param>
        private void InsertPageNumber(HeaderFooterType headerFooterType)
        {
            HeaderFooter hdrFtr = null;
            try
            {
                // 获取当前节
                var sect = textControl1.Sections.GetItem();
                if (sect == null) return;
                switch (headerFooterType)
                {
                    case HeaderFooterType.Header:
                        // 如果页眉不存在,创建页眉
                        if (!HeaderExists()) sect.HeadersAndFooters.Add(headerFooterType);
                        if ((sect.Start == textControl1.InputPosition.Page)
                           && (sect.HeadersAndFooters.GetItem(HeaderFooterType.FirstPageHeader) != null))
                        {
                            headerFooterType = HeaderFooterType.FirstPageHeader;
                        }
                        hdrFtr = sect.HeadersAndFooters.GetItem(headerFooterType);
                        break;
                    case HeaderFooterType.Footer:
                        // 如果页脚不存在,创建页脚
                        if (!FooterExists()) sect.HeadersAndFooters.Add(headerFooterType);
                        if ((sect.Start == textControl1.InputPosition.Page)
                           && (sect.HeadersAndFooters.GetItem(HeaderFooterType.FirstPageFooter) != null))
                        {
                            headerFooterType = HeaderFooterType.FirstPageFooter;
                        }
                        hdrFtr = sect.HeadersAndFooters.GetItem(headerFooterType);
                        break;
                }
                if (hdrFtr == null) return;
                // 如果页眉/页脚已经包含页号则直接退出
                if (hdrFtr.PageNumberFields.Count > 0) return;
                var pgNumFld = new PageNumberField
                {
                    StartNumber = 1,
                    Editable = false,
                    DoubledInputPosition = true,
                    ShowActivated = true,
                };
                hdrFtr.PageNumberFields.Add(pgNumFld);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
        }
        private bool HeaderExists()
        {
            if (textControl1 == null) return false;
            try
            {
                return ((textControl1.Sections.GetItem().HeadersAndFooters.GetItem(TXTextControl.HeaderFooterType.Header) != null)
                            || (textControl1.Sections.GetItem().HeadersAndFooters.GetItem(TXTextControl.HeaderFooterType.FirstPageHeader) != null));
            }
            catch { }
            return false;
        }
        private bool FooterExists()
        {
            if (textControl1 == null) return false;
            try
            {
                return ((textControl1.Sections.GetItem().HeadersAndFooters.GetItem(TXTextControl.HeaderFooterType.Footer) != null)
                            || (textControl1.Sections.GetItem().HeadersAndFooters.GetItem(TXTextControl.HeaderFooterType.FirstPageFooter) != null));
            }
            catch { }
            return false;
        }

 

源码下载:VS2010 + TX X9


关于葡萄城

赋能开发者!葡萄城是专业的集开发工具、商业智能解决方案、低代码开发平台于一身的软件和服务提供商,为超过 75% 的全球财富 500 强企业提供服务。葡萄城专注控件软件领域30年,希望通过模块化的开发控件、灵活的低代码应用开发平台等一系列开发工具、解决方案和服务,帮助开发者快速响应复杂多变的业务需求,最大程度地发挥开发者的才智和潜能,让开发者的 IT 人生更从容更美好。

了解详情,请访问葡萄城官网