我是学习winforms的新手,我坚持以下问题,我不认为我所做的是正确的方法,所以任何帮助都会受到赞赏。
我有4个文本框,例如以下
private void txtBxPlayer1Bid_TextChanged(object sender, EventArgs e)
{
txtBxFundsAvialable.Text = (Convert.ToInt32(txtBxFundsAvialable.Text) - Convert.ToInt32(txtBxPlayer1Bid.Text)).ToString();
}
第5个文本框txtBxFundsAvialable简单地从txtBxFundsAvialable中减去txtBxPlayer1Bid的值。
在designer.cs中我有
this.txtBxPlayer1Bid.Leave += new System.EventHandler(this.txtBxPlayer1Bid_TextChanged);
我遇到的问题是,如果我在txtBxFundsAvialable中有100并且在txtBxPlayer1Bid中输入10,则txtBxFundsAvialable中的值应为90,但txtBxPlayer1Bid等似乎进入循环并且txtBxFundsAvialable中的值变为60. 4个文本框X 10。
对于4个文本框中的任何一个都会发生这种情况
我能解决问题的唯一方法是在txtBxFundsAvialable_TextChanged中将4个文本框的值设置为0,如下所示。
private void txtBxFundsAvialable_TextChanged(object sender, EventArgs e)
{
if (Convert.ToInt32(txtBxPlayer1Bid.Text) > 4 || (Convert.ToInt32(txtBxPlayer2Bid.Text)> 4 || (Convert.ToInt32(txtBxPlayer3Bid.Text)> 4) || (Convert.ToInt32(txtBxPlayer2Bid.Text)> 4)))
{
txtBxPlayer1Bid.Text = "0";
txtBxPlayer2Bid.Text = "0";
txtBxPlayer3Bid.Text = "0";
txtBxPlayer4Bid.Text = "0";
}
}
我正在以正确的方式行事,如开头所述,我是winforms的新手,而且它是一条精准的曲线
答案 0 :(得分:3)
我写了一个简单的代码,其中包含两个获取值的文本框和一个包含结果的文本框。 TextChanged
事件的更新。尝试使用它来修复你的代码..
private void textBox1_TextChanged(object sender, EventArgs e)
{
try
{
int num1 = Int32.Parse(textBox1.Text), num2 = Int32.Parse(textBox2.Text);
textBox3.Text = (num1 - num2).ToString();
}
catch { }
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
textBox1_TextChanged(sender, e);
}
试用此代码并链接您的任何"出价"文本框到此功能。此代码中的textbox1
相当于您的"可用"文本框。
private void textBox_Leave(object sender, EventArgs e)
{
try
{
int num = Int32.Parse(((TextBox)sender).Text), available = Int32.Parse(textBox1.Text);
textBox1.Text = (available - num).ToString();
}
catch { }
}
答案 1 :(得分:0)
不确定.Leave
的运作方式。尝试使用.TextChanged
或WinForms中的等效项。
所有四个(甚至五个)文本框都应使用相同的事件回调方法。
以下是您可以使用该方法执行的操作:
private void txtBx_TextChanged(object sender, EventArgs e)
{
double player1 = 0, player2 = 0, player3 = 0, player4 = 0, total = 0;
if (int.TryParse(txtBxPlayer1Bid.Text, out player1)
&& int.TryParse(txtBxPlayer2Bid.Text, out player2)
&& int.TryParse(txtBxPlayer3Bid.Text, out player3)
&& int.TryParse(txtBxPlayer4Bid.Text, out player4)
&& int.TryParse(txtBxFundsAvialable.Text, out total)
{
total = player1 + player2 + player3 + player4;
}
}