如何动态更改文本框值

时间:2015-12-24 19:00:20

标签: c# .net winforms

我想动态更改TextBox值。 我做了这个,但它不起作用。

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

4 个答案:

答案 0 :(得分:2)

试试这个

    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#开发人员,因此可能会对语法进行一些调整。

答案 1 :(得分:1)

作为dotctor推断,你正在执行一项操作,但却在太空中丢失了。你需要做这样的事情:

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

不清楚您要更改哪个文本框值:您是否正在使用txtPrice更改的事件,因此如果您更改了这样的内容:

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

...当您更改该值时,您将遇到调用相同事件的问题。这就是为什么我只是提出一个" valToChange"那里。你必须根据需要进行调整。

答案 2 :(得分:1)

您应为TextChangedtxtQty的{​​{1}}事件分配处理程序;

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会抛出异常。

答案 3 :(得分:1)

这对我有用:

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):

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 = 1;
if (!txtQty.Text.Trim().Equals(String.Empty))
{
    qty = Convert.ToInt32(txtQty.Text);
}
txtPrice.Text = ((double)rate*qty).ToString();

如果你想获得“花哨”,你可以做其他事情,例如监视txtQty的更改事件,并且只允许输入数值和退格。不过,这只是提问者的练习。