Tx中TextFieldid模版位置定位
请问大神在Tx17版本中使用的是appField.bounds.location.x/y, 在Tx14中没有bounds这个属性,请问如何实现定位?谢谢谢!!回复 1# nisnfox 的帖子
nisnfox 你好,TX 没有纯粹的 Location 定位,都是基于行列位置的定位。楼主可以尝试插入 TXTextControl.Table ,在 Table 单元格输入 TextFiled,进而实现定位。 因为要 弹出一个 用户控件,所以要获取TextFieldid 的x y 位置,17.0用bounds.location.x
但是 14.0没有这个属性,那怎么获取!
回复 3# nisnfox 的帖子
nisnfox 你好,可以使用 InputPositionChanged 事件来获得当前行列值,从而进行判断当前光标是否在 TextFiled 范围内,逻辑判断是否弹出窗体。
private void textControl1_InputPositionChanged(object sender, EventArgs e)
{
int col = this.textControl1.InputPosition.Column;
int row = this.textControl1.InputPosition.Line;
if (row == 1 && col == 1)
{
MessageBox.Show("Test");
}
}
tx 14问题
private void textControl1_TextFieldClicked(object sender, TXTextControl.TextFieldEventArgs e){
TXTextControl.ApplicationField appField = (TXTextControl.ApplicationField)e.TextField;
FieldEditor editor = new FieldEditor();
editor.SelectedField = appField;
editor.UpdateField += new EventHandler(editor_UpdateField);
editor.Cancel += new EventHandler(editor_Cancel);
editor.SelectedField = textControl1.ApplicationFields.GetItem();
Point tbLocation = new Point((appField.Bounds.Location.X -
textControl1.ScrollLocation.X) / dpiX,
(appField.Bounds.Location.Y -
textControl1.ScrollLocation.Y) / dpiX);
editor.Location = tbLocation;
textControl1.Controls.Add(editor);
editor.BringToFront();
editor.Show();
} Point tbLocation = new Point((appField.Bounds.Location.X -
textControl1.ScrollLocation.X) / dpiX,
(appField.Bounds.Location.Y -
textControl1.ScrollLocation.Y) / dpiX);
这一段用tx 14怎么实现! Point tbLocation = new Point((appField.Bounds.Location.X -
textControl1.ScrollLocation.X) / dpiX,
(appField.Bounds.Location.Y -
textControl1.ScrollLocation.Y) / dpiX);
回复 6# nisnfox 的帖子
nisnfox 你好,可以通过获取当前点击 TextField 第一个字符的 InputPosition 去获取 Point:
private void textControl1_TextFieldClicked(object sender, TXTextControl.TextFieldEventArgs e)
{
//获取当前点击 TextField
TXTextControl.TextField currentTextFiled = e.TextField;
//获取当前行、列及 Page 索引
int currentPageIndex=this.textControl1.InputPosition.Page;
int startPositionX = currentTextFiled.Start;
int startPositionY = this.textControl1.InputPosition.Line;
//根据索引创建 InputPosition
TXTextControl.InputPosition startPosition=new TXTextControl.InputPosition(currentPageIndex ,startPositionX ,startPositionY );
//通过 ImputPostion 获取当前点击 TextField Point
Point editorLocation = startPosition.Location;
}
不对
X=-1
Y=-1
达不到上面的效果
回复 8# nisnfox 的帖子
nisnfox 你好,我在楼上代码中做了修改,如果有多行,楼主可以加逻辑判断。//获取当前点击 TextField
TXTextControl.TextField currentTextFiled = e.TextField;
//获取当前行、列及 Page 索引
int currentPageIndex=this.textControl1.InputPosition.Page;
int lineLength = this.textControl1.Lines.Length ;
int startPositionY = currentTextFiled.Start;
//int startPositionX = this.textControl1.InputPosition.Line%lineLength;
int startPositionX = this.textControl1.InputPosition.Line;
//根据索引创建 InputPosition
TXTextControl.InputPosition startPosition=new TXTextControl.InputPosition(currentPageIndex ,startPositionX ,startPositionY );
this.textControl1.InputPosition = startPosition;
//通过 ImputPostion 获取当前点击 TextField Point
Point editorLocation = this.textControl1.InputPosition.Location;
大师还是不对!
页:
[1]
2