C# 删除字符串/文本框中的最后一个字符

本文关键字:最后一个 字符 文本 删除 字符串 | 更新日期: 2023-09-27 18:31:03

我想做一些类似计算器擦除按钮的事情或更具体我想在更改文本框而不是写入数字时删除最后一个字符。就像在Java中一样,我想你可以使用CharAt()方法,但是C#呢?

C# 删除字符串/文本框中的最后一个字符

对于文本框,只需处理KeyPress事件,如下所示:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && e.KeyChar != '.')
    {
        e.Handled = true;
    }
}

尝试子字符串:

var myTextBox = GetMyTexBoxFromSomewhere();
myTextBox.Text = myTextBox.Text.Substring(0, myTextBox.Text.Length - 1);

本着"正确"行事的精神...如果您使用的是 Windows 窗体:

private void tbCalculatorLikeInput_KeyPress(object sender, KeyPressEventArgs e)
{
    if (!char.IsControl(e.KeyChar) 
        && !char.IsDigit(e.KeyChar) 
        && e.KeyChar != '.')
    {
        e.Handled = true;
    }
    // only allow one decimal point
    if (e.KeyChar == '.' 
        && (sender as TextBox).Text.IndexOf('.') > -1)
    {
        e.Handled = true;
    }
}

如果您使用的是 ASP.NET WebForms:

<asp:TextBox id="txtNumbersOnly" Runat="server" />
<asp:RegularExpressionValidator  Runat="server" ID="valNumbersOnly" ControlToValidate="txtNumbersOnly" Display="Dynamic" ErrorMessage="Please enter a numbers only in text box." ValidationExpression="(^([0-9]*|'d*'d{1}?'d*)$)">
</asp:RegularExpressionValidator>

如果您使用的是HTML5/MVC:

<input type="number" />

我认为您更愿意通过子类化TextBox并覆盖OnKeyPress来使用此处所示NumericTextBox

还有其他类似这里的例子

使用以下代码:

stringName = stringName.Remove(stringName.Length - 1);

MSDN: http://msdn.microsoft.com/en-us/library/system.string.remove.aspx

将代码放入 TextBox.TextChanged 事件方法中