gpt4 book ai didi

c# - 如何限制文本框仅接受特定字符

转载 作者:行者123 更新时间:2023-12-02 09:05:47 25 4
gpt4 key购买 nike

我想知道如何限制 C# 表单应用程序中文本框的特定字符数。例如我想限制用户输入 - ()仅一次,然后如果他尝试再次输入,我希望程序限制再次输入。

示例: -123123-123-123 (只有一个 - )。

如果用户删除 -那么应该有权限输入一个-再次,当然不再!

我想阻止用户输入----12341234-- ,或123-4--21或者你还有什么想法!!

这是我正在尝试的:

private void txtStopAfterXTimes_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.OemMinus || e.KeyCode == Keys.Subtract)
{
if (txtStopAfterXTimes.Text.Count((char)'-', 1))
{
e.SuppressKeyPress = true;
}
else if (txtStopAfterXTimes.Text.Count((char)'-', 0))
{
e.SuppressKeyPress = false;
}
}
}

我知道这是错误的,但请帮忙!谢谢...

最佳答案

您可以通过 2 种方式更改 txtStopAfterXTimes 内的文本:一个键 (- )或通过粘贴一个值。这就是为什么我们必须处理2事件:KeyPress用于-按键,TextChanged用于文本粘贴:

代码:(WinForms)

private void txtStopAfterXTimes_TextChanged(object sender, EventArgs e) {
// When pasting a text into txtStopAfterXTimes...
TextBox box = sender as TextBox;

StringBuilder sb = new StringBuilder(box.Text.Length);

bool containsMinus = false;

// We remove all '-' but the very first one
foreach (char ch in box.Text) {
if (ch == '-') {
if (containsMinus)
continue;

containsMinus = true;
}

sb.Append(ch);
}

box.Text = sb.ToString();
}

private void txtStopAfterXTimes_KeyPress(object sender, KeyPressEventArgs e) {
TextBox box = sender as TextBox;

// we allow all characters ...
e.Handled = e.KeyChar == '-' && // except '-'
box.Text.Contains('-') && // when we have '-' within Text
!box.SelectedText.Contains('-'); // and we are not going to remove it
}

关于c# - 如何限制文本框仅接受特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59854818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com