C#Texbox&x27;s';最大长度';属性-错误(Winform)

C#Texbox&x27;s';最大长度';属性-错误(Winform),c#,winforms,loops,textbox,C#,Winforms,Loops,Textbox,这可能有一些解决办法,但是,我不确定目前是什么。设置文本框的MaxLength属性后,我无法手动超过文本框的MaxLength。另一方面,如果我要创建一个循环,通过编程将字符添加到文本框中,那么这个循环可能会超过maxLength属性 textBox1.MaxLength = 5; // I am now unable to manually type in more than 5 chars. for (int i = 0; i < 20; i++) {

这可能有一些解决办法,但是,我不确定目前是什么。设置文本框的MaxLength属性后,我无法手动超过
文本框的
MaxLength
。另一方面,如果我要创建一个循环,通过编程将字符添加到文本框中,那么这个循环可能会超过maxLength属性

    textBox1.MaxLength = 5;  // I am now unable to manually type in more than 5 chars.

    for (int i = 0; i < 20; i++)
    {
    textBox1.AppendText("D");
    }

// Textbox now holds 20 chars.
textBox1.MaxLength=5;//我现在无法手动键入超过5个字符。
对于(int i=0;i<20;i++)
{
文本框1.附录文本(“D”);
}
//文本框现在可以容纳20个字符。
在不必编写更多代码来获取部分数据的情况下,是否有方法确保不超过maxlength属性

问候,, 埃文

怎么样:

textBox1.MaxLength = 5; 

for (int i = 0; i < 20 && i < textBox1.MaxLength; i++)
{
    textBox1.AppendText("D");
}
textBox1.MaxLength=5;
对于(int i=0;i<20&&i
不确定这是否算作“更多的代码行”,但这是一个非常简单的额外检查。

如何:

textBox1.MaxLength = 5; 

for (int i = 0; i < 20 && i < textBox1.MaxLength; i++)
{
    textBox1.AppendText("D");
}
textBox1.MaxLength = 5;

while(textBox1.Text.Length <= textBox1.MaxLength)
    textBox1.AppendText ("D");
textBox1.MaxLength=5;
对于(int i=0;i<20&&i
不确定这是否算作“更多的代码行”,但这是一个非常简单的额外检查。

textBox1.MaxLength=5;
textBox1.MaxLength = 5;

while(textBox1.Text.Length <= textBox1.MaxLength)
    textBox1.AppendText ("D");
而(textBox1.Text.Length
textBox1.MaxLength=5;

while(textBox1.Text.LengthMaxLength:获取或设置用户可以键入或粘贴到文本框控件中的最大字符数。(表单)并获取或设置文本框中允许的最大字符数。(web)

换句话说,这就是MaxLength的要点——它完全是关于控制用户输入的。因为您首先拥有文本框,所以不需要设置自己的硬编程限制


因此,简言之,否-如果不重写其他一些功能(例如OnChanged),或者添加Ben和Sres所示的条件测试,则无法更改此行为。

MaxLength:获取或设置用户可以键入或粘贴到文本框控件中的最大字符数。(表单)并获取或设置文本框中允许的最大字符数。(web)

换句话说,这就是MaxLength的要点——它完全是关于控制用户输入的。因为您首先拥有文本框,所以不需要设置自己的硬编程限制

因此,简言之,否-如果不覆盖其他一些功能(例如OnChanged),或者添加Ben和Sres所示的条件测试,则无法更改此行为。

来自MSDN:

在代码中,可以设置 将Text属性设置为具有 长度大于该值 由MaxLength属性指定。 此属性仅影响文本 在运行时输入控件

如果要防止
文本
长度超过
最大长度
,则需要一些额外的代码。

来自MSDN:

在代码中,可以设置 将Text属性设置为具有 长度大于该值 由MaxLength属性指定。 此属性仅影响文本 在运行时输入控件


如果要防止
文本
超过
最大长度
,则需要一些额外的代码。

据我所知,设置文本框的最大宽度仅对通过UI输入值的最终用户实施此限制。据我所知,此限制不适用于代码

设置文本框的最大宽度文本框仅对通过UI输入值的最终用户实施此限制。此限制不适用于代码。当您不希望用户能够输入超过分配数量的值时,将使用MaxLength。但是,在编程上,它可以被覆盖。追加文本就是这样做的:

public void AppendText(string text)
{
    if (text.Length > 0)
    {
        int start;
        int length;
        this.GetSelectionStartAndLength(out start, out length);
        try
        {
            int endPosition = this.GetEndPosition();
            this.SelectInternal(endPosition, endPosition, endPosition);
            this.SelectedText = text;
        }
        finally
        {
            if (base.Width == 0 || base.Height == 0)
            {
                this.Select(start, length);
            }
        }
    }
}

当您不希望用户输入的数量超过分配的数量时,使用MaxLength。但是,在编程上,它可以被覆盖。这就是追加文本的作用:

public void AppendText(string text)
{
    if (text.Length > 0)
    {
        int start;
        int length;
        this.GetSelectionStartAndLength(out start, out length);
        try
        {
            int endPosition = this.GetEndPosition();
            this.SelectInternal(endPosition, endPosition, endPosition);
            this.SelectedText = text;
        }
        finally
        {
            if (base.Width == 0 || base.Height == 0)
            {
                this.Select(start, length);
            }
        }
    }
}

MaxLength
属性禁止用户键入超过
n个
字符。但是当您通过编程设置
Text
属性时,您的文本框将显示其
Text
属性的值,即使其长度超过
MaxLength


因此,您必须检查循环是否超过maxlength。

maxlength
属性禁止用户键入超过
n
个字符。但是,当您通过编程设置
Text
属性时,即使其长度超过
maxlength值,您的文本框也会显示其
Text
属性的值e>


因此,您必须检查循环是否超过maxlength。

您可以编写一个扩展方法,并使用它来附加文本,而不是.AppendText()

void Main()
{
var t=新文本框();
t、 最大长度=5;
t、 Text=“123”;
t、 附录:最大长度(“456789”);
t、 Text.Dump();//打印12345
}
公共静态类扩展方法
{
public static void AppendTextRespectMaxLength(此文本框,字符串newText)
{

如果(textbox.Text.Length+newText.Length您可以编写一个扩展方法,并使用它来附加文本,而不是.AppendText()

void Main()
{
var t=新文本框();
t、 最大长度=5;
t、 Text=“123”;
t、 附录:最大长度(“456789”);
t、 Text.Dump();//打印12345
}
公共静态类扩展方法
{
public static void AppendTextRespectMaxLength(此文本框,字符串newText)
{

如果(textbox.Text.Length+newText.Length)在问题中添加相应的标记,我不明白你为什么会创建这样的场景?我有点困惑。人们通过
MaxLength
属性的唯一方法是获取源代码。除此之外,我看不到你提出的问题。我只是有很多问题