首页 新闻 会员 周边 捐助

c# textbox multiline = true 获取当前显示的行数

0
悬赏园豆:80 [已解决问题] 解决于 2013-09-22 15:09

我的textbox 设置为多行显示了,如果我输入的内容超出了textbox的高度,即出现了滚动条,我把滚动条拖到中间的时候,请问怎么获取当前画面上能看到的行数(数据)。(只要当前能看到的)

问题补充:

winform 程序,不好意思 忘记说了

V587的主页 V587 | 初学一级 | 园豆:15
提问于:2013-08-12 18:12
< >
分享
最佳答案
0

给几个函数和思路,希望有帮助:

[DllImport("user32.dll", EntryPoint = "SendMessageA")]
private static extern int SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, string lParam);

int EM_GETLINECOUNT = 0x00BA;//获取总行数
int EM_GETFIRSTVISIBLELINE = 0x00CE; //当前显示在textbox1中第一行的行号,0开始算
int totalLineCount = SendMessage(this.textBox1.Handle, EM_GETLINECOUNT, IntPtr.Zero, "");
int currentLineNo = SendMessage(this.textBox1.Handle, EM_GETFIRSTVISIBLELINE, IntPtr.Zero, "");

int lines = textBox1.Height / this.textBox1.Font.Height; // textbox内可显示的行数,这个不精确有时有1行的误差

收获园豆:80
裁纸刀 | 菜鸟二级 |园豆:282 | 2013-08-15 15:59
其他回答(3)
0

js获取如下参数:

textbox的高度

line-height

然后除一下

田林九村 | 园豆:2367 (老鸟四级) | 2013-08-12 19:58
0

这个比较奇葩

小兵仔 | 园豆:1240 (小虾三级) | 2013-08-14 17:11
0

您好楼主,看看能不能获取一下textbox的text

内容中应该有换行的标识符,类似"/n/r"类似的,

然后判断标识符的个数来判断行数可以吗?

seaconch | 园豆:4823 (老鸟四级) | 2013-08-15 13:26

关键就是不知道哪行是显示出来的,哪行没有显示

支持(0) 反对(0) V587 | 园豆:15 (初学一级) | 2013-08-15 14:36

@V587: 您看能不能把行数跟滚动条做一个匹配,

当滚动条的Value到多少值,或者那个范围,对应一个行号

支持(0) 反对(0) seaconch | 园豆:4823 (老鸟四级) | 2013-08-20 13:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册