找回密码
 立即注册

QQ登录

只需一步,快速开始

etsoft

中级会员

31

主题

84

帖子

593

积分

中级会员

积分
593

活字格认证

etsoft
中级会员   /  发表于:2013-12-25 15:22  /   查看:15013  /  回复:25
如何判断当前插入点是在一个textfield内?如果是在一个textfield内,如何将插入点移出到textfield边界外,但插入点的位置不发生改变?

25 个回复

倒序浏览
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 边缘代码如下:

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

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

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

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

  10.             textControl1.TextFieldClicked += textControl1_TextFieldClicked;
  11.             textControl1.KeyDown += textControl1_KeyDown;
  12.         }
  13.                
  14.         void textControl1_TextFieldClicked(object sender, TextFieldEventArgs e)
  15.         {
  16.             TextField clickField = e.TextField;
  17.             int start = clickField.Start;
  18.             int length = clickField.Length;
  19.             this.textControl1.Select(start + length - 1, 0);
  20.         }
复制代码

其余问题我正在调查。
回复 使用道具 举报
etsoft
中级会员   /  发表于:2013-12-26 14:22:00
5#
如何判断当前插入点是在textfield内呢?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-12-26 16:54:00
6#
回复 5楼etsoft的帖子

可以通过 TextField 的 Start 和 Length 属性判断 TextField 的范围,再对比当前的 InputPositon 即可判断。
回复 使用道具 举报
hptj
高级会员   /  发表于:2014-1-5 09:12:00
7#
你可以通过使用,txtcontrol.changed事件,然后获取ApplicationField( "txtcontrol.ApplicationFields.GetItem();")就可以准确的知道了,。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-1-6 10:23:00
8#
回复 5楼etsoft的帖子

请问这个问题进展如何?
回复 使用道具 举报
etsoft
中级会员   /  发表于:2014-1-6 10:57:00
9#
该问题还是很不好解决,主要是将插入点移出textfield边界似乎没有效果
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-1-6 17:47:00
10#
回复 9楼etsoft的帖子

请问你指的是在 两个 TextField 之间无法插入 TextField 吗?使用 4# 中的代码有什么不足呢?
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部