C# winforms离开事件和文本已更改

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

我是学习winforms的新手,我被以下问题困住了,我认为我所做的不是正确的方法,因此任何帮助都将不胜感激

我有4个文本框,如下所示

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说的做,要么做个按钮。我不太明白你想说什么