C# 点击按钮后冻结表单
我有一个关于付款按钮的问题。 我在构建之前没有遇到错误,但在构建并单击“付款”按钮之后,它会挂起。我想这是因为lblTotalPrice.text,但我不知道如何修复它C# 点击按钮后冻结表单,c#,C#,我有一个关于付款按钮的问题。 我在构建之前没有遇到错误,但在构建并单击“付款”按钮之后,它会挂起。我想这是因为lblTotalPrice.text,但我不知道如何修复它 public partial class Form1 : Form { int totalCost; public double holDer; public Form1() { InitializeComponent(); this.cbo1.Items.A
public partial class Form1 : Form
{
int totalCost;
public double holDer;
public Form1()
{
InitializeComponent();
this.cbo1.Items.AddRange(new object[] { "Lechon Kawali - 200", "Bicol Express - 300"
,"Adobo - 350" });
}
private void btnAdd_Click(object sender, EventArgs e)
{
lb1.Items.Add(cbo1.SelectedItem);
lb1.SelectedIndex = lb1.SelectedIndex ;
int z = 0;
if (cbo1.SelectedIndex == 0)
{
z = z + 1;
}
if (cbo1.SelectedIndex == 1)
{
z = z + 2;
}
if (cbo1.SelectedIndex == 2)
{
z = z + 3;
}
switch(z)
{
case 1:
totalCost = totalCost + 200;
break;
case 2:
totalCost = totalCost + 300;
break;
case 3:
totalCost = totalCost + 350;
break;
}
lblSubTotalCost.Text = ("Php " + totalCost.ToString());
}
private void btnDelete_Click(object sender, EventArgs e)
{
int deleteCost = 0;
int itemCost = 0;
foreach (int selectedIndex in lb1.SelectedIndices)
{
itemCost = int.Parse(lb1.Items[selectedIndex].ToString().Split('-')[1]);
deleteCost += itemCost; lb1.Items.RemoveAt(selectedIndex);
}
totalCost = totalCost - deleteCost;
lblSubTotalCost.Text = ("Php " + totalCost.ToString());
lb1.Items.Remove(lb1.SelectedItem);
if (lb1.Items.Count > 0)
{
lb1.SelectedIndex = 0;
}
else
MessageBox.Show("No orders");
}
private void lblVAT_TextChanged(object sender, EventArgs e)
{
Add();
}
private void lblSubTotalCost_TextChanged(object sender, EventArgs e)
{
multiply();
Add();
}
public void multiply()
{
int a;
double b = 0.12;
bool Valid = int.TryParse(totalCost.ToString(), out a);
if (Valid)
lblVAT.Text = (a * b).ToString();
else
lblVAT.Text = "No VAT entered";
}
private void lbTotalPrice_TextChanged(object sender, EventArgs e)
{
Add();
}
public void Add()
{
int a;
int b;
bool AValid = int.TryParse(totalCost.ToString(), out a);
bool BValid = int.TryParse(lblVAT.Text, out b);
if (AValid && BValid)
{
lblTotalPrice.Text = ("Php " + (a + b).ToString());
}
}
private void btnPayment_Click(object sender, EventArgs e)
{
holDer = double.Parse(tbPayment.Text) - double.Parse(lblTotalPrice.Text);
MessageBox.Show("Change: " + holDer.ToString());
}
}
我怀疑这是因为
lblTotalPrice\u TextChanged
事件处理程序调用Add()
,然后更改lblTotalPrice.Text
属性,导致事件再次触发,无限期?正如您在评论中所述,您的问题不是您的应用程序挂起,但问题是您得到的输入字符串格式不正确
异常
似乎是从这个街区:
private void btnPayment_Click(object sender, EventArgs e)
{
holDer = double.Parse(tbPayment.Text) - double.Parse(lblTotalPrice.Text);
MessageBox.Show("Change: " + holDer.ToString());
}
由于这不是一个非常复杂的代码,您的问题似乎是当您将文本框转换为两倍时。确保对双值使用了正确的分隔符,并且在tbPayment
尝试使用TryParse方法:
double res;
if(double.TryParse(tbPayment.Text, out res))
{
holDer = res - double.Parse(lblTotalPrice.Text);
MessageBox.Show("Change: " + holDer.ToString());
}
else
{
MessageBox.Show("Input a correct format");
}
您是否收到任何错误消息?或者它只是挂起?您是否尝试过调试代码,并确定代码在哪一行执行良好,以及在哪一行之后挂起表单。您可以将payment(付款)和price(价格)文本框的值指定给某些变量,并查看它们是否适合在调试时解析为double。@Nicorif在生成并单击payment(付款)按钮后,错误消息显示(输入字符串的格式不正确)@ChetanRanpariya我调试代码并运行,但在输入和之后,在付款框中单击付款按钮。它将挂起并显示错误(输入字符串的格式不正确)。您可以调试代码,并在单击按钮时查看值是否正确。你也可以检查Moo Juice怀疑的原因。Label changed event和Add method正在互相调用,以便它们可能进入jnfiteQuite。@标记是否调试了click事件并查看发生了什么?是。调试后,单击“付款”按钮,错误显示(FormatException未受影响)。我将lblTotalCost.Text更改为lblVAT have Add();这个按钮起作用了。对于lblTotalCost,我必须更改哪些代码?tbPayment.Text的值是多少?lblTotalPrice.Text的值是多少?我将在tbPayment中输入300,lblTotalPrice是200。单击按钮时,我希望更改:100。但是(FormatException未受影响)显示。