当我在 TextBox 中键入时,第一个字符转到文本的末尾
First Character goes to the end of the text when I type in TextBox
我有一个 TextBox
名为 PercentageText
。我使用 TextChanged
事件将“%”附加到 TextBox
中键入的文本。 TextChanged
事件中的代码如下
if (skipTextChange)
skipTextChange = false;
else
{
skipTextChange = true;
if (PercentageText.Text =="")
{
PercentageText.Text = " ";
}
if (PercentageText.TextLength == 1)
{
if (PercentageText.Text != "%")
{
PercentageText.Text =""+ PercentageText.Text.Trim() + "%";
}
}
}
并在 TextChanged
事件块之外初始化 SkipTextChange=false;
。我的问题是当我输入任何内容时,第一个字符一直到文本的末尾,例如,如果我输入 152,它显示 521,当我使用键盘清除 TextBox
时(返回 Space 键),然后再次输入它就可以正常工作了。
与其解决所有这些麻烦,我建议您只需在文本框的右侧添加一个标签,然后将 % 作为标签的文本。
但是,如果您真的想使用 TextChanged 路径,那么您需要测试您的输入是否以 % 字符结尾,如果不是则添加它。您还需要设置下一个字符的输入位置。
if (skipTextChange)
skipTextChange = false;
else
{
skipTextChange = true;
if (PercentageText.Text == "")
{
PercentageText.Text = " ";
}
if (!PercentageText.Text.EndsWith("%"))
{
PercentageText.Text = "" + PercentageText.Text.Trim() + "%";
PercentageText.SelectionStart = PercentageText.TextLength - 1;
}
}
考虑使用这种方法进行广泛测试。 Copy/Paste,应验证删除和退格行为以及插入多个空格或用户直接键入 % 字符的情况。当然,如果这个文本框应该只包含数字,则需要更复杂的验证码。如果这是上下文,那么我建议使用 NUmericUpDown 控件及其右侧的标签技巧。
我有一个 TextBox
名为 PercentageText
。我使用 TextChanged
事件将“%”附加到 TextBox
中键入的文本。 TextChanged
事件中的代码如下
if (skipTextChange)
skipTextChange = false;
else
{
skipTextChange = true;
if (PercentageText.Text =="")
{
PercentageText.Text = " ";
}
if (PercentageText.TextLength == 1)
{
if (PercentageText.Text != "%")
{
PercentageText.Text =""+ PercentageText.Text.Trim() + "%";
}
}
}
并在 TextChanged
事件块之外初始化 SkipTextChange=false;
。我的问题是当我输入任何内容时,第一个字符一直到文本的末尾,例如,如果我输入 152,它显示 521,当我使用键盘清除 TextBox
时(返回 Space 键),然后再次输入它就可以正常工作了。
与其解决所有这些麻烦,我建议您只需在文本框的右侧添加一个标签,然后将 % 作为标签的文本。
但是,如果您真的想使用 TextChanged 路径,那么您需要测试您的输入是否以 % 字符结尾,如果不是则添加它。您还需要设置下一个字符的输入位置。
if (skipTextChange)
skipTextChange = false;
else
{
skipTextChange = true;
if (PercentageText.Text == "")
{
PercentageText.Text = " ";
}
if (!PercentageText.Text.EndsWith("%"))
{
PercentageText.Text = "" + PercentageText.Text.Trim() + "%";
PercentageText.SelectionStart = PercentageText.TextLength - 1;
}
}
考虑使用这种方法进行广泛测试。 Copy/Paste,应验证删除和退格行为以及插入多个空格或用户直接键入 % 字符的情况。当然,如果这个文本框应该只包含数字,则需要更复杂的验证码。如果这是上下文,那么我建议使用 NUmericUpDown 控件及其右侧的标签技巧。