我想动态更改TextBox值。 我做了这个,但它不起作用。
private void txtPrice_TextChanged(object sender, EventArgs e)
{
Convert.ToString(Convert.ToInt16(txtRate.Text) * Convert.ToInt16(txtQty.Text));
}
答案 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)
您应为TextChanged
和txtQty
的{{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();
确保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的更改事件,并且只允许输入数值和退格。不过,这只是提问者的练习。