如何得知textbox 已经滚动至哪一行

rryqsh 2007-12-06 10:56:37
想要实现一个类似于SQL2000里面的小功能
就是一开始文本框中的内容不全部显示,等滚动条被用户拉至最后几行时再加载下面的一块,如此重复至结束
我知道通过VScoll事件来获取滚动
可是不知道现在滚动到哪一行了,请各位高人帮忙
...全文
110 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
meiZiNick 2008-04-30
  • 打赏
  • 举报
回复
都是很好的建议! 值得学习
AlexDemon 2007-12-07
  • 打赏
  • 举报
回复
通过向TextBox SendMessage可以获取当前显示第一行的Index,但是这个行包括WordWrap产生的软回车行。不仅仅是NewLine字符分割的硬回车行。
下面是简单的Code Sample。需要C#代码的话楼主可以给我一个邮箱。我发给你。
    
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

StringBuilder sb = new StringBuilder();

for (int i = 0; i < 100; i++)
{
sb.Append(string.Format("Index={0}\"!@#D!@E!@#@!X#!@#S!@S!@#!@#!@#S!@#!@#\"\r\n", i));
}

this.textBox1.Text = sb.ToString();
}

private void textBox1_MouseMove(object sender, MouseEventArgs e)
{
IntPtr lPResult = UnsafeNativeMethods.SendMessage(this.textBox1.Handle, NativeMethod.EM_GETFIRSTVISIBLELINE, IntPtr.Zero, IntPtr.Zero);

int lineNumber = lPResult.ToInt32();

this.Text = string.Format("FistVisibleLine:{0}", lineNumber);
}
}

[SuppressUnmanagedCodeSecurity]
internal static class UnsafeNativeMethods
{
[DllImport("user32.dll")]
public static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);
}

internal static class NativeMethod
{
public const int EM_GETFIRSTVISIBLELINE = 0x00CE;
}
hixiaosheng 2007-12-06
  • 打赏
  • 举报
回复
listbox里面对于item有索引值的吧,你判断item的索引值就可以了,textbox没这么用过。

8,833

社区成员

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

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