gpt4 book ai didi

c# - 如何使 TextBox 随着用户的输入不断更新?

转载 作者:太空宇宙 更新时间:2023-11-03 15:44:30 25 4
gpt4 key购买 nike

我的表单中有一个 TextBox,用户应该在那里输入一些字符串。

在每 2 个字符之后,它应该会自动在其中添加一个 "|"。但我不知道该怎么做。这是我的代码:

private void textBox1_TextChanged(object sender, EventArgs e)
{
string input = textBox1.Text; int count = 0;
foreach (char c in input)
{
count++;
if (count == 2)
{
input += '|';
count = 0;
textBox1.Text = input;
}
}
}
  • 用户只能输入十六进制字符(即 0-9,a-f)。

我已经在 Keypress 事件上尝试了 e.Keychar,但它不起作用,如果用户使用 Copy-PasteCtrl-CCtrl-V

最佳答案

如果您真的不需要,您不应该处理 TextChanged 事件,但您应该依赖 MaskedTextBox,它正是为此目的而构建的。

你可以找到一个很好的演练 here on MSDN .

基本上您应该设置Mask 属性。你甚至可以使用 sort of regular expressions as a mask以确保只输入您允许的值。


“操作方法”:

创建一个MaskedTextBox控件,设置mask为&&\|&&\|&&\|&&\|&&('&'表示任意ASCII字符,重复\|&& 根据需要)。然后创建一个 TextChanged 事件并将事件处理程序设置为:

void maskedTextBox1_TextChanged(object sender, System.EventArgs e)
{
string input = this.maskedTextBox1.Text;

StringBuilder outputBuilder = new StringBuilder(input.Length);
char[] allowedCharacters = new char[] { '|', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };

foreach (char c in input)
{
if (allowedCharacters.Contains(c))
{
outputBuilder.Append(c);
}
}

string output = outputBuilder.ToString();
if (!input.Equals(output))
{
this.maskedTextBox1.Text = output;
}
}

关于c# - 如何使 TextBox 随着用户的输入不断更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28794173/

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