我正在计划一个C#应用程序,其中一些相当大的字符串将显示在可滚动/可调整大小的文本框中。
当用户关闭应用并稍后返回时,我想从lostFocus
上显示的点重新显示这些字符串。
有没有办法在全文中获取textBox中显示的第一个字符的索引?
答案 0 :(得分:1)
这两个应该可以帮助你获得插入位置。在关闭应用程序之前获取插入位置,然后使用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();
}
答案 1 :(得分:1)
我没有得到你的问题,但是根据我的理解
TextBox.CaretIndex
将解决您的问题。
答案 2 :(得分:0)
如果您使用的是WPF或Silverlight; System.Windows.Controls.TextBox
有TextBox.GetFirstVisibleLineIndex()
方法
将此选项与MaxLines
和MinLines
属性结合使用可以保存状态。
答案 3 :(得分:0)
感谢所有人!
我想尼克刚刚解决了它(谢谢!)。 GetCharIndexFromPosition()是要走的路。 我已经阅读过该函数调用,但我不知道如何创建引用TextBox中第一个“插入点”的Point对象。
亲切的问候,
JPeraita