【问题标题】:Textbox first seven characters cannot be deleted [duplicate]文本框前七个字符无法删除[重复]
【发布时间】:2026-01-21 11:15:01
【问题描述】:

大家好,谁能帮我处理我的 c# 应用程序。我希望文本框中的前 7 个字符/数字不能被删除或前 7 个字符/数字的退格禁用。其余的只能用数字输入。这真的可能吗?我有一个组合框和一个texbox。如果我在组合框中选择一个值/文本,该值/文本将在文本框中,然后该值/文本无法删除。我不太擅长c#。

private void combo1_SelectedIndexChanged(object sender, EventArgs e)
    {

        String sent = "ABC-DEF";
        txtbox1.Text = sent.ToString();
        txtbox1.SelectionStart = txtbox1.Text.Length;
}

【问题讨论】:

  • Winforms 还是 ASP.NET?
  • 为了确保我理解您的情况,前 7 个字符将由软件设置,您想阻止用户删除它们吗?为什么不简单地使用放置在组合框旁边的标签来显示“不可变”字符串?
  • 请参阅"Should questions include “tags” in their titles?",其中的共识是“不,他们不应该”!
  • @DStanley - winforms

标签: c# winforms


【解决方案1】:

使用 KeyDown 事件 (http://www.dotnetperls.com/keycode)。

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
    if ((e.KeyCode == Keys.Back || e.KeyCode == Keys.Delete) && textBox1.Text.Length == 7)
    {
        e.SuppressKeyPress = true;
    }
}

验证数字输入:Get the char on Control.KeyDown?


您可以使用 JS 库:http://www.jqueryscript.net/form/jQuery-Plugin-For-Adding-Prefixes-To-Input-Values-Prefix-Input.html

或者让你自己编写代码,比如:

HTML:

<input id="txt" name="teste" type="text" value="ABC-DEF" />

JS:

 $('#txt').on('keydown', function(e){
        if(e.keyCode == 8 && $('#txt').val().length == 7){
            e.preventDefault();
        }
     });

测试:http://jsfiddle.net/ecuovbca/

【讨论】:

  • 要仅接受 txt 前缀后的数字,请使用 jQuery 掩码 (igorescobar.github.io/jQuery-Mask-Plugin)。您的面具可以是:“AAA-AAA00”6 个字母和 2 个数字。根据自己的喜好定制。
  • Winforms,不是 ASP.NET ;-)
  • @Yitzhak - 它的 winforms 但感谢您的帮助我将您的答案保留在我的笔记中以供将来参考如果我需要网络方面的帮助。谢谢
  • 您的 WinForm 代码并不能真正阻止用户处理前七个字符。
  • @YitzhakStone - 上面的代码对我有帮助。我更改了一些代码,您帮我回答了我的问题,谢谢
【解决方案2】:

我想您说的是 Windows 窗体应用程序,例如而不是 ASP.net。

我会将前 7 个字符保留在标签中(非用户可编辑控件映射到数据的非用户可编辑部分),然后文本框应负责剩余的用户可编辑字符。

要将文本框限制为仅数字,请参见此处:

How do I make a textbox that only accepts numbers?

【讨论】: