.net - 限制 .net 文本框中的行数

标签 .net windows winforms

我正在使用带有多行选项的 winforms 文本框。我想限制可以输入的行数。用户不能输入更多行。

我怎样才能做到这一点?

最佳答案

你需要检查

txtbox.Lines.Length

您需要针对 2 种情况处理此问题: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;
    }
}

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

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

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

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.");
    }
}

关于.net - 限制 .net 文本框中的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1048425/

相关文章:

c# - 并非所有使用 Image.PropertyItems 检索的图像属性

c# - 通过 SqlDataReader 将 SQL 数据类型 BIT NOT NULL 转换为 C# 类型 Byte

c# - 返回 ICollection<T> 而不是 List<T> 的真正优势是什么?

.net - 继承自 List(of T) 类的问题

c++ - Visual C++ 应用程序在窗体后面打开一个命令提示符

python - 写入文件时出现 IOError

c# - XNA 窗口缩放性能

c# - 获取机器 SID(包括主域 Controller )

c# - Entity Framework 7 和 BindingList

C# WebRequest 登录 session