限制.net文本框中的行数

Ram*_*oni 13 .net windows winforms

我正在使用带有多行选项ON的winforms文本框.我想限制可以在其中输入的行数.用户不应该输入更多行.

我怎样才能做到这一点?

Ras*_*dit 13

你需要检查

txtbox.Lines.Length

您需要为两种情况处理此问题:1.用户在文本框中键入2.用户已在文本框中粘贴文本

用户在文本框中键入内容

您需要处理文本框的按键事件,以防止用户在超过最大行时输入更多行.

private const int MAX_LINES = 10;

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (this.textBox1.Lines.Length >= MAX_LINES && e.KeyChar == '\r')
    {
        e.Handled = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经测试了上面的代码.它按预期工作.

用户在文本框中粘贴一些文本

要防止用户粘贴超过最大行数,您可以编写文本更改事件处理程序:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    if (this.textBox1.Lines.Length > MAX_LINES)
    {
        this.textBox1.Undo();
        this.textBox1.ClearUndo();
        MessageBox.Show("Only " + MAX_LINES + " lines are allowed.");
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 一个训练有素的解决复杂问题的人通常会被简单性所困扰! (2认同)