如何获取 TextBox 中某一行文字?

iYoung 2004-10-05 09:33:51
在 WinForm 中,对于一多行 TextBox,如何获得其中某一行文字?
...全文
273 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
李洪喜 2004-10-06
  • 打赏
  • 举报
回复
textBox.Text.Split("\n")
iYoung 2004-10-06
  • 打赏
  • 举报
回复
自己解决了,走了弯路。以前用原生代码用 SendMessage(Handle, EM_GETLINE...) 好用,其实只要得到指定行的第一个字符的位置和行长度就好办了。用下面的代码:

int start = API.SendMessage(handle, API.EM_LINEINDEX, line, 0);
if(start >= 0)
{
int len = API.SendMessage(handle, API.EM_LINELENGTH, start, 0);
if(Marshal.SystemDefaultCharSize == 1)
{
byte[] b = Encoding.Default.GetBytes(textBox.Text);
return Encoding.Default.GetString(b, start, len);
}
else
{
return textBox.Text.Substring(start, len));
}
}
else
{
return string.Empty;
}

非常简单。
wangxt 2004-10-06
  • 打赏
  • 举报
回复
up
iYoung 2004-10-05
  • 打赏
  • 举报
回复
我用 SendMessage(IntPtr, int, int, StringBuilder) 形式不能得到正确的文字。请问 haiwangstar 有没有具体的代码?
haiwangstar 2004-10-05
  • 打赏
  • 举报
回复

使用P/INVOKE调用SendMessage函数,向TextBox发送EM_GETLINE消息。。。。
iYoung 2004-10-05
  • 打赏
  • 举报
回复
不是这么简单的。this.textBox1.Lines[i].ToString() 得到的是以回车符分界的一段文字。我说的是“一行”。
ly_0205 2004-10-05
  • 打赏
  • 举报
回复
textBox.Lines属性,一个字符串数组,每个元素是一行。
另外textBox.Text.Split("\n")也可以
sjzwinfor 2004-10-05
  • 打赏
  • 举报
回复
this.textBox1.Lines[i].ToString();

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧