找回密码
 立即注册

QQ登录

只需一步,快速开始

iceman
社区贡献组   /  发表于:2012-4-17 18:34:00
11#

回复 10# nisnfox 的帖子

nisnfox  你好,
1.关于 10# 坐标计算不准确问题,原因已经找出,请使用下面代码测试:

  1. editorLocation = new Point((editorLocation.X -
  2.                                           textControl1.ScrollLocation.X)/dpiX,
  3.                                           (editorLocation.Y -
  4.                                           textControl1.ScrollLocation.Y)/dpiX);
复制代码

2.弹出异常:Invalid property value.(01-0903) 问题正在调查当中,稍后回复~
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-4-17 19:50:00
12#

回复 10# nisnfox 的帖子

nisnfox 你好,请尝试一下代码,我这边成功实现了该功能:
  1. Point editorLocation =new Point();
  2.             int intX = 0;
  3.             int intY = 0;
  4.             Rectangle rectScreen = new Rectangle();

  5.             Editor editor = new Editor();
  6.             TXTextControl.TextField currentField = e.TextField;
  7.             //   g_strFieldValue = objTextField.Text;
  8.             this.textControl1.Selection.Start = currentField.Start;
  9.             this.textControl1.Selection.Length = 0;

  10.             editorLocation.Y = (textControl1.InputPosition.Location.Y / 15) + Convert.ToInt32(textControl1.Font.Size) + 10 - (textControl1.ScrollLocation.Y / 15);
  11.             editorLocation.X = (textControl1.InputPosition.Location.X / 15) - (textControl1.ScrollLocation.X / 15);

  12.             intY = editorLocation.Y;
  13.             intX = editorLocation.X;

  14.             rectScreen = Screen.PrimaryScreen.WorkingArea;
  15.             if (((intX + editor.Width) > rectScreen.Width))
  16.                 intX = rectScreen.Width - editor.Width;
  17.             if (((intY + editor.Height) > rectScreen.Height))
  18.                 intY = rectScreen.Height - editor.Height;
  19.             editor.Top = intY;
  20.             editor.Left = intX;

  21.             //// hilite the field
  22.             textControl1.Selection.Start = currentField.Start - 1;
  23.             textControl1.Selection.Length = currentField.Length;
  24.             textControl1.Selection.TextBackColor = System.Drawing.Color.Navy;

  25.             editor.Show();
  26.             this.textControl1.Controls.Add(editor);
  27.             editor.BringToFront();
复制代码
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 立即注册
返回顶部