DCAgile 发表于 2015-12-15 09:15:00

回复 10楼gw0506的帖子

换成这句   if (string.IsNullOrEmpty(t.Text) && e.KeyChar.Equals('\b'))   试试

这中方式 测试过 解决不了问题

gw0506 发表于 2015-12-15 11:45:00

现在实际上是2个问题:
1. 不让applicationfile被删除。用如下代码做,不需要另行判断。
case "remark":
                        t.Text = p.Remark;
                        //Begin = t.Start-1;
                        //length = t.Length;
                        t.Deleteable = false;

2. 你注意看,当鼠标移动到“刷分刷”第一个刷字的一半的时候,还是手型的cursor,但是移动到刷的最左边是,成了光标。这时候输入任何字符,然后从后往前删除。发现删除到这里的时候删除不了了。但是选中文字,可以del删除。现在要解决这个问题。

gw0506 发表于 2015-12-15 15:25:00

新建一个applicationfield,然后添加到textcontrol中,不存在第二个问题。
本案是读取word文档,读取后的applicationfield的start位置比文字的其实位置多了1,原因不详。所以导致上述问题2. 此时用位置做判断,显然不可能解决问题。做了如下修改。
case "remark":
                        t.Text = " " + p.Remark;


DCAgile 发表于 2015-12-18 10:32:00

回复 13楼gw0506的帖子

问题:

TX Control对于内容的可编辑性控制,目前英文是没有问题,中文——无法控制其局部可编辑

gw0506 发表于 2015-12-18 12:10:00

使用TextFieldEntered和TextFieldLeft这一对事件。进入时打开IMEMode,离开时关闭IMEMode。

      private void Form1_Load(object sender, EventArgs e)
      {
            Helper.Instance.LoadWord(InitTemplatePath, this.txContent);
            AFC = this.txContent.ApplicationFields;
            DTC = this.txContent.DocumentTargets;
            this.txContent.Tables.GridLines = false;
            SetAppFieldsName();
            InitData();

            this.txContent.ImeMode = System.Windows.Forms.ImeMode.Disable;
            this.txContent.TextFieldEntered += txContent_TextFieldEntered;
            this.txContent.TextFieldLeft += txContent_TextFieldLeft;

      }



      void txContent_TextFieldLeft(object sender, TextFieldEventArgs e)
      {
            if (e.TextField.Name == "remark")
            {
                this.txContent.ImeMode = System.Windows.Forms.ImeMode.Disable;
            }
            else
            {
                this.txContent.ImeMode = System.Windows.Forms.ImeMode.Disable;
            }
      }

      void txContent_TextFieldEntered(object sender, TextFieldEventArgs e)
      {
            if (e.TextField.Name == "remark")
            {
                this.txContent.ImeMode = System.Windows.Forms.ImeMode.NoControl;
            }
            else
            {
                this.txContent.ImeMode = System.Windows.Forms.ImeMode.Disable;
            }
      }
页: 1 [2]
查看完整版本: TX TextControl 如何实现控制局部信息的可编辑性