TX TextControl 中通过代码插入页号

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

发布于 2013/08/31 00:00

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

关于葡萄城

葡萄城是专业的软件开发技术和低代码平台提供商,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。葡萄城开发技术始于1980年,40余年来始终聚焦软件开发技术,有深厚的技术积累和丰富的产品线。是业界能够同时赋能软件开发和低代码开发的企业。凭借过硬的产品能力、活跃的用户社区和丰富的伙伴生态,与超过3000家合作伙伴紧密合作,产品广泛应用于信息和软件服务、制造、交通运输、建筑、金融、能源、教育、公共管理等支柱产业。

推荐相关案例
推荐相关资源
关注微信
葡萄城社区二维码

关注“葡萄城社区”

加微信获取技术资讯

加微信获取技术资讯

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态