DCAgile 发表于 2015-12-7 11:07:00

TX TextControl 如何实现控制局部信息的可编辑性

问题:

1.如图所示: 如何实现只允许“remark” 可编辑,其他均为不可编辑???

iceman 发表于 2015-12-7 16:54:00

回复 1楼DCAgile的帖子

可以通过 FieldMerged 事件获取每次绑定的文本位置,在编辑时判断:

      int start = 0;
      int length = 0;
      bool isMark = true;
      private void mailMerge1_FieldMerged(object sender, TXTextControl.DocumentServer.MailMerge.FieldMergedEventArgs e)
      {
            if (isMark)
            {
                start = e.MailMergeFieldAdapter.Start;
                length = e.MailMergeFieldAdapter.Length;

                isMark=false;
            }
      }

      private void 获取绑定文本ToolStripMenuItem_Click(object sender, EventArgs e)
      {
            this.textControl1.Select(start-1, length);
            MessageBox.Show(this.textControl1.Selection.Text);
      }



这是我当前的调查结果。你可以尝试下

DCAgile 发表于 2015-12-7 17:30:00

回复 2楼iceman的帖子

1.麻烦将你写的实例发过来,我看一下

2.麻烦继续跟踪一下一个模版中出现多个相同字段的情况的处理方式??

DCAgile 发表于 2015-12-8 16:02:00

回复 3楼DCAgile的帖子

private void mailMerge1_FieldMerged(object sender, TXTextControl.DocumentServer.MailMerge.FieldMergedEventArgs e)

刚电话没有人接听
问题: 添加的事件 —— 无法除法该事件,是什么原因???   麻烦将你的实例发一下??

iceman 发表于 2015-12-9 09:47:00

回复 4楼DCAgile的帖子

请参考:

DCAgile 发表于 2015-12-10 17:19:00

回复 5楼iceman的帖子

int start = 0;
      int length = 0;
      private void mailMerge1_FieldMerged(object sender, TXTextControl.DocumentServer.MailMerge.FieldMergedEventArgs e)
      {
            getCollection = new Dictionary<int, int>();
            if (e.MailMergeFieldAdapter.ApplicationField.Name=="content")
            {
                start = e.MailMergeFieldAdapter.Start;
                length = e.MailMergeFieldAdapter.Length;

                getCollection.Add(start-1, length);

                this.textControl1.Select(start, length);
                this.textControl1.Selection.TextBackColor = Color.Red;
            }
      }

      private void textControl1_Changed(object sender, EventArgs e)
      {
            int a = start-1;
            int c = this.textControl1.InputPosition.TextPosition;
            int b = length+1;

            if (c>a &amp;&amp; c<(a+b))
            {
            }
            else
            {
                //如何退出事件
                return;
            }
      }


问题:textControl1_Changed 怎么退出事件???

iceman 发表于 2015-12-11 16:53:00

回复 6楼DCAgile的帖子

你指的是如何撤销当前更改吗?

我需要咨询下厂商看如下撤销。

DCAgile 发表于 2015-12-14 17:13:00

this.txContent.ApplicationFields 信息丢失

回复 7楼iceman的帖子

this.txContent.ApplicationFields 信息丢失
操作步骤如下:
第一步:TX_DB运行
第二步:刷分刷,更改为:刷分刷   aa
第三步:刷分刷   aa,更改为:cccc 刷分刷   aa
第四步:按“Backspace”键,删除(删除cccc 刷分刷   aa)

问题:
当删除到cccc时,this.txContent.ApplicationFields 数据会丢失,,,?? 什么原因??

gw0506 发表于 2015-12-14 17:59:00

初步判断。是在判断field其实位置的时候有问题,没有进入到你的防删除逻辑。正在尝试找其他办法做判断。

gw0506 发表于 2015-12-14 18:02:00

换成这句   if (string.IsNullOrEmpty(t.Text) &amp;&amp; e.KeyChar.Equals('\b'))   试试
页: [1] 2
查看完整版本: TX TextControl 如何实现控制局部信息的可编辑性