我在表单上有一个文本框,在同一表单上有一个按钮。在按钮单击事件上,我想坚持文本框具有Double形式的值。到目前为止我所拥有的是这个 -
public double getUnitStake(Form frontpage)
{
double doubleresult=0;
bool unitStake;
foreach (Control c in frontpage.Controls)
{
if (c.Name == "tbUnitStake")
{
unitStake = double.TryParse( (c as TextBox).Text, out doubleresult);
if (!unitStake)
{
}
else
{
doubleresult=double.Parse((c as TextBox).Text);
}
}
}
return doubleresult;
}
但对于我的生活,如果double.tryparse方法为false,我无法弄清楚该做什么。我想要的是程序执行停止,直到在文本框中输入合适的值。我怎么能达到这个目的呢?感谢所有人和任何帮助。
答案 0 :(得分:1)
在我看来,您正在验证文本框的内容。因此,您可以使用TextBox控件的验证事件。 (可选)将errorProvider控件连接到它以特别关注错误(闪烁感叹号)。 “e.Cancel”语句将阻止您在输入double之前对表单执行任何其他操作。
private void textBox1_Validating(object sender, CancelEventArgs e)
{
double doubleresult = 0;
bool result = Double.TryParse(textBox1.Text, out doubleresult);
if (result)
{
errorProvider1.SetError(textBox1, string.Empty);
}
else
{
errorProvider1.SetError(textBox1, "Must be a Double");
e.Cancel = true;
}
}
答案 1 :(得分:0)
我不了解您的计划的完整要求。
您可以默认禁用该按钮。在文本框的文本更改事件中,检查输入的值是否为double。
一旦确认该值确实是双倍,那么您可以启用该按钮。 这样,除非输入double,否则默认情况下程序执行将暂停。
答案 2 :(得分:0)
你只需要TryParse yor值,如果你的值不是double,这个方法会返回0.0:
public double getUnitStake(Form frontpage)
{
double doubleresult=0;
foreach (Control c in frontpage.Controls)
{
if (c.Name == "tbUnitStake")
{
double.TryParse( (c as TextBox).Text, out doubleresult);
}
}
return doubleresult;
}
答案 3 :(得分:0)
您的代码没有问题,但以下更改
public double getUnitStake(Form frontpage)
{
double doubleresult=0;
bool unitStake;
foreach (Control c in frontpage.Controls)
{
if (c.Name == "tbUnitStake")
{
unitStake = double.TryParse( (c as TextBox).Text, out doubleresult);
}
}
return doubleresult;
}
你不需要再次解析“doubleresult”,因为tryparse已经完成了它。您可以使用unitStake变量进一步使用。