如何实现“完全查看”的多行TextBox?

时间:2015-09-11 18:52:19

标签: c# winforms textbox scrollbar

我正在尝试使用具有以下要求的多行TextBox创建表单:

  • 文本框中的文字可能很短或很长。
  • 没有太多空间可供使用。
  • 我想确定已经看到整个文本。我无法确定用户是否真正阅读过它,但我至少可以要求所有用户都已阅读过。

所以我正在尝试制作一个“完全查看”的多行TextBox。

这张照片应该清楚我要做的事情:

enter image description here

如果他们在滚动整个事情之前检查了复选框,我就会知道不相信它们。

我想我需要知道:

  • 当表单出现时,放入TextBox的文本是短(所有可见而不滚动)还是长(显示垂直滚动条)?
  • 如果显示垂直滚动条,用户是否一直将其滚动到底部?

有关如何实现这一目标的任何想法?

1 个答案:

答案 0 :(得分:2)

TextBox没有滚动事件,RichTextBox有。它还有一个方法,可以让你获得最接近点位置的字符索引。

private readonly Point _lowerRightCorner;

public frmDetectTextBoxScroll()
{
    InitializeComponent();
    _lowerRightCorner = new Point(richTextBox1.ClientRectangle.Right,
                                  richTextBox1.ClientRectangle.Bottom);
}

private void richTextBox1_VScroll(object sender, EventArgs e)
{
    int index = richTextBox1.GetCharIndexFromPosition(_lowerRightCorner);
    if (index == richTextBox1.TextLength - 1) {
        // Enable your checkbox here
    }
}