如何查找可调整大小/滚动文本框中显示的子字符串索引?

时间:2012-11-02 08:50:19

标签: c# string textbox indexing

我正在计划一个C#应用程序,其中一些相当大的字符串将显示在可滚动/可调整大小的文本框中。

当用户关闭应用并稍后返回时,我想从lostFocus上显示的点重新显示这些字符串。

有没有办法在全文中获取textBox中显示的第一个字符的索引?

4 个答案:

答案 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.TextBoxTextBox.GetFirstVisibleLineIndex()方法 将此选项与MaxLinesMinLines属性结合使用可以保存状态。

答案 3 :(得分:0)

感谢所有人!

我想尼克刚刚解决了它(谢谢!)。 GetCharIndexFromPosition()是要走的路。 我已经阅读过该函数调用,但我不知道如何创建引用TextBox中第一个“插入点”的Point对象。

亲切的问候,

JPeraita