我正在计划一个 C# 应用程序,其中一些相当大的字符串将显示在可滚动/可调整大小的文本框中。
当用户关闭应用程序并稍后返回时,我想从它们显示的位置重新显示这些字符串lostFocus
。
有没有办法在全文中获取文本框中显示的第一个字符的索引?
这两个应该可以帮助您获得插入符号的位置。在关闭应用程序之前获取插入符号位置,然后使用SelectionStart
属性将其设置回来:
textBox1.SelectionStart;
textBox1.SelectionLength;
编辑:
这行得通,刚刚经过测试,正如我所说,使用SelectionStart
属性和ScrollToCaret()
方法很重要。您必须获取第一次可见的字符的索引,为此您应该使用以下GetCharIndexFromPosition()
方法TextBox
:
int selectionStart;
private void button1_Click(object sender, EventArgs e)
{
Graphics g = textBox1.CreateGraphics();
SizeF size = g.MeasureString("A", textBox1.Font);
g.Dispose();
int index = textBox1.GetCharIndexFromPosition(new Point(0, (int)(2 * size.Height + 0.5)));
selectionStart = index;
}
private void button3_Click(object sender, EventArgs e)
{
textBox1.SelectionStart = selectionStart;
textBox1.ScrollToCaret();
}
我没有得到你的问题,但据我了解
TextBox.CaretIndex
将解决您的问题。
如果您使用的是 WPF 或 Silverlight;有System.Windows.Controls.TextBox
一个方法TextBox.GetFirstVisibleLineIndex()
。
将此与MaxLines
和MinLines
属性结合使用以保存状态。
谢谢大家!
我猜尼克刚刚解决了它(谢谢!)。GetCharIndexFromPosition() 是要走的路。我已经阅读了有关该函数调用的信息,但我不知道如何创建一个引用 TextBox 中第一个“插入点”的 Point 对象。
亲切的问候,
杰拉伊塔