2

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

当用户关闭应用程序并稍后返回时,我想从它们显示的位置重新显示这些字符串lostFocus

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

4

4 回答 4

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();
        }
于 2012-11-02T08:58:45.540 回答
1

我没有得到你的问题,但据我了解

TextBox.CaretIndex将解决您的问题。

于 2012-11-02T09:20:56.240 回答
0

如果您使用的是 WPF 或 Silverlight;有System.Windows.Controls.TextBox一个方法TextBox.GetFirstVisibleLineIndex()
将此与MaxLinesMinLines属性结合使用以保存状态。

于 2012-11-02T09:06:30.323 回答
0

谢谢大家!

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

亲切的问候,

杰拉伊塔

于 2012-11-02T22:37:25.457 回答