文本框前七个字符无法删除

时间:2015-10-16 14:26:57

标签: c# winforms

好日子,有人可以帮助我使用我的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;
}

2 个答案:

答案 0 :(得分:0)

我认为你在谈论Windows窗体应用,例如而不是ASP.net。

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

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

How do I make a textbox that only accepts numbers?

答案 1 :(得分:0)

使用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 lib: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/