如何实现一个"fully viewed"多行文本框?
How to implement a "fully viewed" multi-line TextBox?
我正在尝试使用具有以下要求的多行文本框创建表单:
- 文本框中的文字可短可长。
- 可用的 space 不多。
- 我想确保已阅读全部文本。我不能确定用户是否真正阅读过它,但我至少可以要求所有内容都已经看到了。
所以我正在尝试制作一个 "fully viewed" 多行文本框。
这张照片应该清楚地表明我要做什么:
如果他们在滚动浏览整个内容之前选中复选框,我就知道不要相信他们。
我想我需要知道:
- 出现表单时,放入 TextBox 中的文本是短文本(无需滚动即可显示)还是长文本(显示垂直滚动条)?
- 如果显示垂直滚动条,用户是否将其一直滚动到底部?
关于如何实现这一点有什么想法吗?
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
}
}
我正在尝试使用具有以下要求的多行文本框创建表单:
- 文本框中的文字可短可长。
- 可用的 space 不多。
- 我想确保已阅读全部文本。我不能确定用户是否真正阅读过它,但我至少可以要求所有内容都已经看到了。
所以我正在尝试制作一个 "fully viewed" 多行文本框。
这张照片应该清楚地表明我要做什么:
如果他们在滚动浏览整个内容之前选中复选框,我就知道不要相信他们。
我想我需要知道:
- 出现表单时,放入 TextBox 中的文本是短文本(无需滚动即可显示)还是长文本(显示垂直滚动条)?
- 如果显示垂直滚动条,用户是否将其一直滚动到底部?
关于如何实现这一点有什么想法吗?
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
}
}