C# winforms离开事件和文本已更改
我是学习winforms的新手,我被以下问题困住了,我认为我所做的不是正确的方法,因此任何帮助都将不胜感激 我有4个文本框,如下所示C# winforms离开事件和文本已更改,c#,winforms,C#,Winforms,我是学习winforms的新手,我被以下问题困住了,我认为我所做的不是正确的方法,因此任何帮助都将不胜感激 我有4个文本框,如下所示 private void txtBxPlayer1Bid_TextChanged(object sender, EventArgs e) { txtBxFundsAvialable.Text = (Convert.ToInt32(txtBxFundsAvialable.Text) - Convert.ToInt32(txt
private void txtBxPlayer1Bid_TextChanged(object sender, EventArgs e)
{
txtBxFundsAvialable.Text = (Convert.ToInt32(txtBxFundsAvialable.Text) - Convert.ToInt32(txtBxPlayer1Bid.Text)).ToString();
}
第五个文本框txtbxfundsaviable简单地从txtbxfundsaviable中减去txtBxPlayer1Bid的值
在designer.cs中,我有
this.txtBxPlayer1Bid.Leave += new System.EventHandler(this.txtBxPlayer1Bid_TextChanged);
我的问题是,如果我在txtbxfundsavable中有100,在txtBxPlayer1Bid中输入10,那么txtbxfundsavable中的值应该是90,但是txtBxPlayer1Bid等似乎进入了循环,txtbxfundsavable中的值变成了60。4个文本框x10
4个文本框中的任何一个都会发生这种情况
解决此问题的唯一方法是将txtbxfundsavalable_文本中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的新手,它是一个精明的学习曲线,不知道
如何操作。尝试使用.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;
}
}
不确定.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;
}
}
不确定.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;
}
}
不确定.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;
}
}
我编写了一个简单的代码,其中包含两个获取值的文本框和一个包含结果的文本框。使用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);
}
编辑
尝试此代码并将任何“出价”文本框链接到此函数<此代码中的代码>文本框1
相当于您的“可用”文本框
我编写了一个简单的代码,其中包含两个获取值的文本框和一个包含结果的文本框。使用
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);
}
编辑
尝试此代码并将任何“出价”文本框链接到此函数<此代码中的代码>文本框1相当于您的“可用”文本框
我编写了一个简单的代码,其中包含两个获取值的文本框和一个包含结果的文本框。使用
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);
}
编辑
尝试此代码并将任何“出价”文本框链接到此函数<此代码中的代码>文本框1相当于您的“可用”文本框
我编写了一个简单的代码,其中包含两个获取值的文本框和一个包含结果的文本框。使用
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);
}
编辑
尝试此代码并将任何“出价”文本框链接到此函数<此代码中的代码>文本框1相当于您的“可用”文本框
你为什么要听
离开
事件?嗨@YoryeNathan正在论坛和这里寻求帮助,这似乎是正确的方式,即听文本更改
事件。逻辑上是正确的。要么照@YoryeNathan说的做,要么做个按钮。我不太明白你想在这个脚本中做什么。另外,为什么要用4个不同的文本框进行简单的减法?代码中有一个明显的逻辑错误,更改文本框文本不能从总数中减去一个数量。用户键入1
并减去1,然后0
并减去10。所以你减去了11,这当然不正确。如果你想成为一名程序员,思考如何解决这个问题是一个很重要的心理练习。你为什么要听Leave
事件?嗨@YoryeNathan在论坛和这里寻求帮助,这似乎是正确的方式,即听TextChanged
事件。逻辑上是正确的。要么照@YoryeNathan说的做,要么做个按钮。我不太明白你想在这个脚本中做什么。另外,为什么要用4个不同的文本框进行简单的减法?代码中有一个明显的逻辑错误,更改文本框文本不能从总数中减去一个数量。用户键入1
并减去1,然后0
并减去10。所以你减去了11,这当然不正确。如果你想成为一名程序员,思考如何解决这个问题是一个很重要的心理练习。你为什么要听Leave
事件?嗨@YoryeNathan在论坛和这里寻求帮助,这似乎是正确的方式,即听TextChanged
事件。逻辑上是正确的。要么照@YoryeNathan说的做,要么做个按钮。我不太明白你想在这个脚本中做什么。另外,为什么要用4个不同的文本框进行简单的减法?代码中有一个明显的逻辑错误,更改文本框文本不能从总数中减去一个数量。用户键入1
并减去1,然后0
并减去10。所以你减去了11,这当然不正确。如果你想成为一名程序员,思考如何解决这个问题是一个很重要的心理练习。你为什么要听Leave
事件?嗨@YoryeNathan在论坛和这里寻求帮助,这似乎是正确的方式,即听TextChanged
事件。逻辑上是正确的。要么照@YoryeNathan说的做,要么做个按钮。我不太明白你想说什么