如何在TextBox中自动显示文本的开头

时间:2010-09-13 18:41:32

标签: c# textbox

我有很长的文字并把它放到TextBox中。我想自动显示文本的开头而不是结尾。但TextBox会自动显示文本的结尾。

我能做些什么来实现它。

我使用SelectionStart方法将光标放在TextBox中文本的开头,以便实现一些简单的IntelliSense,因此首选解决方案不会使用移动光标的方法。

4 个答案:

答案 0 :(得分:2)

您最初可以在文本框中放置一个较小的值,然后根据您显示全文的条件附加全文的剩余部分。

示例:

textBox.text = someString.Substring(0, x);

然后在需要时做

textBox.AppendText(someString.Substring(x+1));

答案 1 :(得分:1)

我假设您使用的是WinForms。


更新:奇怪。如果在表单构造函数中执行,则下面的删除代码将按所描述的方式工作,但不会在表单生命周期中执行(例如按钮单击处理程序)。

请注意,如果您已经使用SelectionStart将光标放在文本的开头(例如,通过textBox.SelectionStart = 0;),则所有需要遵循的内容都是textBox.ScrollToCaret();


在文本框中添加文本而不是textBox.AppendText(someLongString)时,请考虑使用textBox.Text = someLongString方法。

如果您必须在分配新文本之前清除当前文字,请使用textBox.Text = string.Empty;,然后拨打textBox.AppendText();

答案 2 :(得分:1)

当没有输入焦点时,您可以使用所有者绘制来覆盖文本框的渲染。这可以让你完全控制它显示的内容,而不会破坏文本框的任何实际编辑功能。

答案 3 :(得分:1)

您可以通过P / Invoke将Win32滚动消息发送到基础文本框句柄:

[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int wMsg, IntPtr wParam, IntPtr lParam);

// From User32.dll
private const int WM_VSCROLL = 277;
private const int SB_TOP = 6;

SendMessage(yourTextBox.Handle, WM_VSCROLL, (IntPtr)SB_TOP, IntPtr.Zero);