找回密码
 立即注册

QQ登录

只需一步,快速开始

yangjianlang
初级会员   /  发表于:2016-2-18 16:34  /   查看:5378  /  回复:8
QQ截图20160218162329.jpg (39.24 KB, 下载次数: 122)

8 个回复

倒序浏览
gw0506
超级版主   /  发表于:2016-2-18 18:39:00
沙发
基本想法就是找到关键字,然后确定selection start和length,然后替换文字。不过现在还有点问题,Find方法好像找不到Table中的文本,明天再继续调试。
参考代码如下:
  1.             int position = this.textControl1.Find("主诉",0,FindOptions.NoMessageBox);
  2.             this.textControl1.Selection.Start = position;

  3.             int row = -1;
  4.             for (int i = 1; i < this.textControl1.Tables.GetItem(10).Rows.Count - 1; i++)
  5.             {
  6.                 if (this.textControl1.Tables.GetItem(10).Cells.GetItem(i, 1).Text.StartsWith("主诉"))
  7.                 {
  8.                     row = i;
  9.                     break;
  10.                 }
  11.             }

  12.             this.textControl1.Selection.Length = this.textControl1.Tables.GetItem(10).Cells.GetItem(row, 1).Text.Length;

  13.             this.textControl1.Selection.Text = "替换";
复制代码
回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-2-19 12:33:00
板凳
修改后,可以使用了。
  1.         private void Form1_Load(object sender, EventArgs e)
  2.         {
  3.             int tableID = 10;
  4.             textControl1.Tables.Add(3, 1, tableID);
  5.             TXTextControl.Table table = textControl1.Tables.GetItem(tableID);
  6.             table.Cells.GetItem(1, 1).Text = "主诉:右肩关节上举疼痛7天。";
  7.         }
  8.         private void button1_Click(object sender, EventArgs e)
  9.         {
  10.             int position = 0;
  11.             this.textControl1.InputPosition = new InputPosition(position);
  12.             position = this.textControl1.Find("主诉") + 3;
  13.             this.textControl1.Selection.Start = position;
  14.             int row = -1;
  15.             for (int i = 1; i < this.textControl1.Tables.GetItem(10).Rows.Count - 1; i++)
  16.             {
  17.                 if (this.textControl1.Tables.GetItem(10).Cells.GetItem(i, 1).Text.StartsWith("主诉"))
  18.                 {
  19.                     row = i;
  20.                     break;
  21.                 }
  22.             }
  23.             this.textControl1.Selection.Length = this.textControl1.Tables.GetItem(10).Cells.GetItem(row, 1).Text.Length
  24.                 - position;
  25.             this.textControl1.Selection.Text = "替换";
  26.         }
复制代码

评分

参与人数 1满意度 +5 收起 理由
yangjianlang + 5 问题解决,非常感谢

查看全部评分

回复 使用道具 举报
yangjianlang
初级会员   /  发表于:2016-2-25 01:19:00
地板
问题解决非常感谢!
回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-2-25 15:33:00
5#
不客气,应该的~
回复 使用道具 举报
yangjianlang
初级会员   /  发表于:2016-2-26 23:28:00
6#
回复 3楼gw0506的帖子

你写的代码是TX.Text.Control.ActiveX吗?感觉有些属性好象没有你写的那样?

SelStart与SectionStart,selLength与SectionLength有什么区别?
回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-2-29 12:08:00
7#
不是,我写的是TX for WinForms。
SelStart是selection.Start,不是sectionstart。
回复 使用道具 举报
yangjianlang
初级会员   /  发表于:2016-3-3 00:16:00
8#
回复 7楼gw0506的帖子

如果是TX.Text.Control.ActiveX该怎么写呢?
回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-3-3 15:10:00
9#
一样的思路,你查一下文档吧。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部