C# 如何动态更改文本框值

C# 如何动态更改文本框值,c#,.net,winforms,C#,.net,Winforms,我想动态更改文本框值。 我这样做了,但不起作用 private void txtPrice_TextChanged(object sender, EventArgs e) { Convert.ToString(Convert.ToInt16(txtRate.Text) * Convert.ToInt16(txtQty.Text)); } 试试这个 private void txtPrice_TextChanged(object sender, EventArgs e) {

我想动态更改文本框值。 我这样做了,但不起作用

private void txtPrice_TextChanged(object sender, EventArgs e)
{
   Convert.ToString(Convert.ToInt16(txtRate.Text) * Convert.ToInt16(txtQty.Text));
}
试试这个

    private void txtPrice_TextChanged(object sender, EventArgs e)
    {
          int rate = 0;
          int qty = 0;

          Int32.TryParse(txtRate.Text, out rate);
          Int32.TryParse(txtQty.Text, out qty);

          int total = rate * qty

          // Set the new textBox value
          // txtTotal should be your textbox value (what you have called it)
          txtTotal.Text = total.toString()
    }

我不是本地C#开发人员,因此语法可能会有一些调整。

正如dotctor推断的那样,您正在执行一个操作,但却将其丢失在空间中。您需要这样做:

String valToChange;
private void txtPrice_TextChanged(object sender, EventArgs e)
{
     valToChange = Convert.ToString(Convert.ToInt16(txtRate.Text) * Convert.ToInt16(txtQty.Text));
}
private void txtPrice_TextChanged(object sender, EventArgs e)
{
     txtPrice.Text = Convert.ToString(Convert.ToInt16(txtRate.Text) * Convert.ToInt16(txtQty.Text));
}
不清楚要更改哪个文本框值,但是:您使用的是txtPrice的changed事件,因此如果您这样更改:

String valToChange;
private void txtPrice_TextChanged(object sender, EventArgs e)
{
     valToChange = Convert.ToString(Convert.ToInt16(txtRate.Text) * Convert.ToInt16(txtQty.Text));
}
private void txtPrice_TextChanged(object sender, EventArgs e)
{
     txtPrice.Text = Convert.ToString(Convert.ToInt16(txtRate.Text) * Convert.ToInt16(txtQty.Text));
}

…当您更改该值时,调用同一事件时会出现问题。这就是为什么我在那里放了一个“valToChange”。您必须根据需要进行调整。

您应该为
TextChanged
事件
txtQty
txtRate
分配一个处理程序

private void txtQty_TextChanged(object sender, EventArgs e)
{
    UpdatePrice();
}

private void txtRate_TextChanged(object sender, EventArgs e)
{
    UpdatePrice();
}

//code from user2893289 answer
private void UpdatePrice()
{
      int r = 0, q = 0;
      int.TryParse(txtRate.Text, out r);
      int.TryParse(txtQty.Text, out q);
      txtPrice.Text = (r*q).toString()
}
您应该更喜欢使用
int.TryParse
而不是
Convert.ToInt32
,因为如果输入字符串格式不正确,
Convert.ToInt32
将引发异常。

这对我很有效:

double rate = Convert.ToDouble(txtRate.Text);
int qty = Convert.ToInt32(txtQty.Text);
txtPrice.Text = ((double)rate*qty).ToString();
它假设txtRate包含一个值,如“3.00”,txtQty包含一个值,如“7”

更新 由于速率为“只读”,因此这可能是一种更好的方法:

const double RANA_RASHIDS_RATE = 3.14; // or whatever it should be
. . .
txtRate.Text = RANA_RASHIDS_RATE.ToString(); // this is just for show
double rate = RANA_RASHIDS_RATE;
int qty = Convert.ToInt32(txtQty.Text);
txtPrice.Text = ((double)rate*qty).ToString();
更新2 确保txtQty中有值,或使用假值(1):



如果您想获得“想象”,还可以做其他事情,例如监视txtQty的更改事件,只允许输入数值和退格。不过,这留给提问者作为练习。

您没有使用语句的返回值。我的意思是,当输入价格和数量时,txtPrice应该显示txtrate*txtqty的结果。因此,当您在文本框中键入价格时,您希望事件处理程序用新的计算替换刚才键入的内容吗?这样做似乎有点奇怪。我如何使用我语句的返回值?是的,我确实想要那个。。sstan此代码不起作用,因为TxtPrice文本框(我希望显示结果的地方)是只读的。重要吗?我不知道用户2893289。你可以添加和读取任何你想要的值。只需更改Int32.TryParse中的第一个参数。所以,如果您想阅读txtPrice.Text,您可以这样做:int price=0;Int32.TryParse(txtPrice.Text,out price);谢谢大家,特别是2893289。您的代码解决了我的输入字符串问题。以下代码正在工作,但在选择项目名称时,它显示输入字符串的格式不正确。但这一次,它计算了所需的值。int r=int.Parse(txtRate.Text);int q=int.Parse(txtQty.Text);Text=(r*q).ToString();你能把这个代码作为问题的更新吗?“未采用格式”是什么意思?错误是输入字符串未采用格式。所以我尝试了convert.toint和int.parse两种方法。但同样的错误。你确定吗?简单地说“格式不正确”?是的,好像输入字符串的格式不正确。当我用txtRate写东西时,这段代码可以工作。我想查看结果,而不必输入txtRate。因为txtRate是只读文本框,如果它对你有效,你可以将它标记为答案。你不需要输入它;可以在设计时设置该值。无论值是否为只读,代码都将工作。事实上,在这种情况下,我会做一些不同的事情。我会更新这个答案。你的更新代码工作很好。我只是在txtqty文本框中编写了代码,而不是txtprice。谢谢你,伙计