etsoft 发表于 2013-12-25 15:22:00

如何判断当前插入点是在一个textfield内?

如何判断当前插入点是在一个textfield内?如果是在一个textfield内,如何将插入点移出到textfield边界外,但插入点的位置不发生改变?

iceman 发表于 2013-12-25 17:39:00

回复 1楼etsoft的帖子

不好意思,请问你指当插入点处于textfield内,把输入的字符插入到 textfield边界外,在输入结束后把插入点再切换回原始位置?

etsoft 发表于 2013-12-26 09:12:00

是这样的情况:
      在留痕模式下,我插入的每一个字符都是放在一个textfield内,但如果插入点是在另一个textfield内,则创建不了textfield,所以希望先判断当前插入点是否是一个textfield内,如果是,则希望将插入点移到该textfield外。比如,我现有两个textfield:AB,我的插入点是在AB之间,插入点有可能是在A或B,我需要将插入点移到textfield之外,并且移出后插入点是在AB之间。

iceman 发表于 2013-12-26 14:18:00

回复 3楼etsoft的帖子

etsoft 你好,
把插入点挪动到 textfield 边缘代码如下:

      private void Form1_Load(object sender, EventArgs e)
      {
            this.textControl1.Text = "";

            TextField field1 = new TextField();
            field1.Text = "中文";

            TextField field2 = new TextField();
            field2.Text = "English";

            textControl1.TextFields.Add(field1);
            textControl1.TextFields.Add(field2);

            textControl1.TextFieldClicked += textControl1_TextFieldClicked;
            textControl1.KeyDown += textControl1_KeyDown;
      }
               
      void textControl1_TextFieldClicked(object sender, TextFieldEventArgs e)
      {
            TextField clickField = e.TextField;
            int start = clickField.Start;
            int length = clickField.Length;
            this.textControl1.Select(start + length - 1, 0);
      }

其余问题我正在调查。

etsoft 发表于 2013-12-26 14:22:00

如何判断当前插入点是在textfield内呢?

iceman 发表于 2013-12-26 16:54:00

回复 5楼etsoft的帖子

可以通过 TextField 的 Start 和 Length 属性判断 TextField 的范围,再对比当前的 InputPositon 即可判断。

hptj 发表于 2014-1-5 09:12:00

你可以通过使用,txtcontrol.changed事件,然后获取ApplicationField( "txtcontrol.ApplicationFields.GetItem();")就可以准确的知道了,。

iceman 发表于 2014-1-6 10:23:00

回复 5楼etsoft的帖子

请问这个问题进展如何?

etsoft 发表于 2014-1-6 10:57:00

该问题还是很不好解决,主要是将插入点移出textfield边界似乎没有效果

iceman 发表于 2014-1-6 17:47:00

回复 9楼etsoft的帖子

请问你指的是在 两个 TextField 之间无法插入 TextField 吗?使用 4# 中的代码有什么不足呢?
页: [1] 2 3
查看完整版本: 如何判断当前插入点是在一个textfield内?