C# 只在“后”写两个字符&引用;?
在文本框中,在这个字符后面“.”我希望用户只输入两个类似这样的字符C# 只在“后”写两个字符&引用;?,c#,C#,在文本框中,在这个字符后面“.”我希望用户只输入两个类似这样的字符 100.00。我该怎么做呢?如果你的目标只是数字,请使用: winforms wpf asp.net 如果您的目标只是数字,请使用: winforms wpf asp.net 执行事件以限制和修改内容 private void textBox1_TextChanged(object sender, EventArgs e) { int i = textBox1.Text.IndexOf("."); i
100.00
。我该怎么做呢?如果你的目标只是数字,请使用:
winforms
wpf
asp.net
如果您的目标只是数字,请使用: winforms wpf asp.net 执行事件以限制和修改内容
private void textBox1_TextChanged(object sender, EventArgs e)
{
int i = textBox1.Text.IndexOf(".");
if ((i != -1) && (i == textBox1.Text.Length - 4))
{
textBox1.Text = textBox1.Text.Substring(0, textBox1.Text.Length - 1);
textBox1.SelectionStart = textBox1.Text.Length;
}
}
实现事件以限制和修改内容
private void textBox1_TextChanged(object sender, EventArgs e)
{
int i = textBox1.Text.IndexOf(".");
if ((i != -1) && (i == textBox1.Text.Length - 4))
{
textBox1.Text = textBox1.Text.Substring(0, textBox1.Text.Length - 1);
textBox1.SelectionStart = textBox1.Text.Length;
}
}
您可以检查textbox.text的长度后的点,这样做。 找到“.”的索引,然后如果textbox.text.length大于该索引+3,则删除最后一个字母
int indexofDot=textbox.Text.indexOf('.');
if(textbox.text.Length>indexofDot+3) {... }
要删除最后一个字母,只需将字符串复制到另一个临时字符串上,并删除最后一个字符
然后将其返回到textbox.Text您可以检查textbox的长度。点后的Text可以执行此操作。 找到“.”的索引,然后如果textbox.text.length大于该索引+3,则删除最后一个字母
int indexofDot=textbox.Text.indexOf('.');
if(textbox.text.Length>indexofDot+3) {... }
要删除最后一个字母,只需将字符串复制到另一个临时字符串上,并删除最后一个字符
然后将其返回文本框。Text您可以使用其事件验证输入:
private void textBox1_TextChanged(object sender, EventArgs e)
{
TextBox txt = (TextBox)sender;
double d;
if (!double.TryParse(txt.Text, out d))
{
MessageBox.Show("Please enter a valid number");
return;
}
string num = d.ToString();
string decSeparator = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
int numDecPlaces = 0;
int decSepIndex = num.LastIndexOf(decSeparator);
if (decSepIndex != -1)
numDecPlaces = num.Substring(decSepIndex).Length;
if (numDecPlaces > 2)
{
MessageBox.Show("Please enter two decimal places at a maximum");
return;
}
}
您可以使用它的事件来验证输入:
private void textBox1_TextChanged(object sender, EventArgs e)
{
TextBox txt = (TextBox)sender;
double d;
if (!double.TryParse(txt.Text, out d))
{
MessageBox.Show("Please enter a valid number");
return;
}
string num = d.ToString();
string decSeparator = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
int numDecPlaces = 0;
int decSepIndex = num.LastIndexOf(decSeparator);
if (decSepIndex != -1)
numDecPlaces = num.Substring(decSepIndex).Length;
if (numDecPlaces > 2)
{
MessageBox.Show("Please enter two decimal places at a maximum");
return;
}
}
首先,您需要确定您在功能上是否希望:
- 防止即使用面罩,或
- 验证即使用正则表达式
当您选择验证时,请对其中任何一项使用最佳实践 首先,您需要确定您在功能上是否希望:
- 防止即使用面罩,或
- 验证即使用正则表达式
当您选择验证时,请对其中任何一项使用最佳实践 ASP.NET、Winforms还是WPF?在任何情况下,带面具的文本框可能是最好的解决方案。-我同意Daniel的观点,知道你在使用哪种技术很重要。另一方面,知道您尝试了什么对我们回答您的问题很有用。您提出的问题类似于]ASP.NET、Winforms或WPF?在任何情况下,带面具的文本框可能是最好的解决方案。-我同意Daniel的观点,知道你在使用哪种技术很重要。另一方面,知道你尝试了什么对我们回答你的问题是有用的。你问的问题类似于]总结会使这成为更好的答案,因为它的有用性完全依赖于链接的网站,而我们无法控制链接的内容。@RhysW什么总结?这是一个使用它来解决问题的总结,为什么它有用,也许还有一个示例实现。在一个清晰的背景下给出的信息越多,答案就越好,对未来面临这个问题的人来说可能就越有用。如果解决方案已经准备好了,我会发布它,但总的来说,我反对提供解决方案,我更喜欢提供想法,它有助于学习编码,而不仅仅是复制粘贴解决方案。有些人,包括我自己在内,在视觉上学习得更好,例如,一旦我看到一个解决方案,就更容易理解和操作到一系列不同的解决方案中,以备将来使用,并掌握一个新的概念摘要将使这成为一个更好的答案,就目前而言,它的有用性完全依赖于链接站点,而我们无法控制链接站点的内容。@RhysW总结了什么?这是一个使用它来解决问题的总结,为什么它有用,也许还有一个示例实现。在一个清晰的背景下给出的信息越多,答案就越好,对未来面临这个问题的人来说可能就越有用。如果解决方案已经准备好了,我会发布它,但总的来说,我反对提供解决方案,我更喜欢提供想法,它有助于学习编码,而不仅仅是复制粘贴解决方案。有些人,包括我自己,在视觉上学习得更好,例如,一旦我看到一个解决方案,就更容易理解和操纵到一系列不同的解决方案中,以备将来使用,并掌握一个新概念