关于自动计算

xueyonglyn 2009-03-14 03:30:26
我有三个textbox控件,想实现这样的功能:
在第一个控件中输入产品数量,第二个控件中输入产品单价后,第三个控件自动计算出产品总金额
搞了半天没成功,请教高手们了。。。小弟不才,最好有代码示例
...全文
147 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
sandals 2009-03-14
  • 打赏
  • 举报
回复
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace test
{
public partial class Form1 : Form
{
uint quantity;
float price;

public Form1()
{
InitializeComponent();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
try
{
quantity = Convert.ToUInt16(textBox1.Text.Trim());
}
catch (Exception)
{
}
if (textBox2.Text.Length != 0)
{
textBox3.Text = (quantity * price).ToString();

}
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
try
{
price = Convert.ToSingle(textBox2.Text.Trim());
}
catch (Exception)
{
}

if (textBox1.Text.Length != 0)
{
textBox3.Text = (quantity * price).ToString();
}
}
}
}
试试以上代码。希望对你有帮助
xueyonglyn 2009-03-14
  • 打赏
  • 举报
回复
那样就失去了我的初衷了。。。结贴!给分!
wuyi8808 2009-03-14
  • 打赏
  • 举报
回复
那就在网页中添加一个“计算”按钮。
xueyonglyn 2009-03-14
  • 打赏
  • 举报
回复
不用ajax不行吗?
wuyi8808 2009-03-14
  • 打赏
  • 举报
回复
ajax
xueyonglyn 2009-03-14
  • 打赏
  • 举报
回复
可是这样的话,不是相当于整个页面都刷新了一次啊。。。
不能像winform程序那样无刷新计算吗?
huzi01245 2009-03-14
  • 打赏
  • 举报
回复
当然AutoPostBack=true啊,要不然它不会提交的啊
wuyi8808 2009-03-14
  • 打赏
  • 举报
回复
你不说,我们都以为是 Winform 程序。
wuyi8808 2009-03-14
  • 打赏
  • 举报
回复
默认情况下,TextChanged 事件并不马上导致向服务器发送 Web 窗体页。而是当下次发送窗体时在服务器代码中引发此事件。

若要使 TextChanged 事件引发即时发送,请将 TextBox 控件的 AutoPostBack 属性设置为 true。
xueyonglyn 2009-03-14
  • 打赏
  • 举报
回复
对!不好意思,忘了说了
xueyonglyn 2009-03-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wuyi8808 的回复:]
看上去没有问题。

注意这两个方法:
number_TextChanged
TextBox8_TextChanged
的名称是不是和事件一致?
[/Quote]
我检查了,是一致的

wuyi8808 2009-03-14
  • 打赏
  • 举报
回复
Web 程序?
xueyonglyn 2009-03-14
  • 打赏
  • 举报
回复
是不是要加AutoPostBack 的属性啊?
ctan 2009-03-14
  • 打赏
  • 举报
回复
在第一个, 第二个控件的TextChanged事件中, 对数量与单价计算后, 填入第三个控件
wuyi8808 2009-03-14
  • 打赏
  • 举报
回复
看上去没有问题。

注意这两个方法:
number_TextChanged
TextBox8_TextChanged
的名称是不是和事件一致?

xueyonglyn 2009-03-14
  • 打赏
  • 举报
回复
protected void number_TextChanged(object sender, EventArgs e)
{
calc();

}
private void calc()
{
try
{
float f = float.Parse(number.Text.Trim()) * float.Parse(TextBox8.Text.Trim());
qian.Text = f.ToString();

}
catch (Exception)
{

qian.Text = "";
}

}

protected void TextBox8_TextChanged(object sender, EventArgs e)
{
calc();
}


我用的是textchanged 事件,可是这样并不能成功,大家看看上面这段代码有什么问题。。。
zgke 2009-03-14
  • 打赏
  • 举报
回复
用 TextChanged 事件更好些:
恩 TextChanged 里写就好了
wuyi8808 2009-03-14
  • 打赏
  • 举报
回复
用 TextChanged 事件更好些:

using System;
using System.Windows.Forms;

class Form1 : Form
{
TextBox tbx1, tbx2, tbx3;

Form1()
{
Label lbl1 = new Label();
lbl1.Parent = this;
lbl1.Text = "数量(&N)";
lbl1.Top = 5;
lbl1.AutoSize = true;

tbx1 = new TextBox();
tbx1.Parent = this;
tbx1.Left = 50;
tbx1.TextChanged += new EventHandler(Changed);

Label lbl2 = new Label();
lbl2.Parent = this;
lbl2.Text = "单价(&P)";
lbl2.Top = 35;
lbl2.AutoSize = true;

tbx2 = new TextBox();
tbx2.Parent = this;
tbx2.Left = 50;
tbx2.Top = 30;
tbx2.TextChanged += new EventHandler(Changed);

Label lbl3 = new Label();
lbl3.Parent = this;
lbl3.Text = "金额(&M)";
lbl3.Top = 65;
lbl3.AutoSize = true;

tbx3 = new TextBox();
tbx3.Parent = this;
tbx3.Left = 50;
tbx3.Top = 60;
}

void Changed(Object sender, EventArgs e)
{
double d1, d2;
double.TryParse(tbx1.Text, out d1);
double.TryParse(tbx2.Text, out d2);
tbx3.Text = (d1 * d2).ToString();
}

static void Main()
{
Application.Run(new Form1());
}
}
xueyonglyn 2009-03-14
  • 打赏
  • 举报
回复
withcsharp 你的列子不行啊。。。。
wuyi8808 2009-03-14
  • 打赏
  • 举报
回复
using System;
using System.Windows.Forms;

class Form1 : Form
{
TextBox tbx1, tbx2, tbx3;

Form1()
{
Label lbl1 = new Label();
lbl1.Parent = this;
lbl1.Text = "数量(&N)";
lbl1.Top = 5;
lbl1.AutoSize = true;

tbx1 = new TextBox();
tbx1.Parent = this;
tbx1.Left = 50;
tbx1.KeyUp += new KeyEventHandler(TextBoxKeyUp);

Label lbl2 = new Label();
lbl2.Parent = this;
lbl2.Text = "单价(&P)";
lbl2.Top = 35;
lbl2.AutoSize = true;

tbx2 = new TextBox();
tbx2.Parent = this;
tbx2.Left = 50;
tbx2.Top = 30;
tbx2.KeyUp += new KeyEventHandler(TextBoxKeyUp);

Label lbl3 = new Label();
lbl3.Parent = this;
lbl3.Text = "金额(&M)";
lbl3.Top = 65;
lbl3.AutoSize = true;

tbx3 = new TextBox();
tbx3.Parent = this;
tbx3.Left = 50;
tbx3.Top = 60;
}

void TextBoxKeyUp(Object sender, KeyEventArgs e)
{
double d1, d2;
double.TryParse(tbx1.Text, out d1);
double.TryParse(tbx2.Text, out d2);
tbx3.Text = (d1 * d2).ToString();
}

static void Main()
{
Application.Run(new Form1());
}
}
加载更多回复(4)
演示下载: http://demo.codechina.net/vf/tsjxc.exe 总部主系统 1 功能 1.1 进货管理 1.1.1 进货单查询、录入、修改、删除、恢复。并将进货数据传至库存模块,经库存审核后自动录入库存库。 1.1.2 缺货清单查询。 1.1.3 退货(退厂)数据查询、打印。根据库存库退货出库所传来的数据自动录入。 1.1.4 统计进货数据,查看和打印统计结果。统计的项目为: 1.1.4.1 任意时段所有商品的进货、退货、保修金额合计。 1.1.4.2 任意时段某一商品的进货、退货、保修数量、金额合计。 1.1.4.3 到目前为止尚未保修返回的金额合计。 1.1.4.4 任意时段所有供应商的进货、退货、保修金额合计。 1.1.4.5 任意时段某一供应商的进货、退货、保修金额合计。 1.1.5 供应商查询、录入、修改、删除、恢复。 1.1.6 保修(保修退厂)数据查询、打印、返回核消。根据库存库保修出库所传来的数据自动审核录入。 1.2 库存管理 1.2.1 初始化库存,录入商品的初始库存数,一旦总帐中已有该商品,则不能再录入初始数。 1.2.2 进、出库数据查询、录入、修改、删除、恢复。审核及自动录入进货模块和代销模块由于进货、出货、退货及保修传来的进出库数据。打印进出库单。 1.2.3 设定商品库存下限。在库存低于下限时报警,并出具下限报警商品清单给进货模块。 1.2.4 盘点。查看、打印盘点表。录入盘盈、盘亏数据。盘亏的数据做为报费数进行统计。残次品库的盘点,盘盈、盘亏数直接在残次品库中处理。 1.2.5 (暂不使用)残次品、报费数据的输入。正品转残次品,从仓库总帐及日记帐中做出库处理,自动转到残次品库;残次品转正品,则自动从残次品库中出库转向总库,总帐及日记帐中做入库处理。 1.2.6 库存数据统计,查看、打印统计数据。统计的项目为: 1.2.6.1 统计到目前为止所有商品的数量、金额合计。 1.2.6.2 任意时段所有商品的进库、出库数量、金额合计。 1.2.6.3 任意时段某一商品的进库、出库数量、金额合计。 1.2.6.4 到目前为止残次品的库存金额合计。 1.2.6.5 任意时段所有商品的报费金额合计。 1.2.6.6 任意时段某一商品的报费数量、金额合计。 1.3 销售管理 1.3.1 记录每一笔销售数据。录入、修改、删除、恢复、查看每一笔从总部的仓库中直接销售出去的数据。并将销售数据自动传送到库存模块用于审核及自动录入。 1.3.2 退货管理。录入、修改、删除、恢复、查看有关退货的数据,并将退货数据自动传给库存模块,由库存审核后自动录入。 1.3.3 保修管理。录入、修改、删除、恢复、查看有关保修的数据,返回核消,并将保修数据自动传给库存模块,由库存审核后自动录入。 1.3.4 统计销售数据,并查看和打印统计数据,按金额排序,标记出数量最多的商品。统计的项目为: 1.3.4.1 任意时段所有商品的销售金额、合计。 1.3.4.2 任意时段某一商品的销售数量、金额合计。 1.4 代销管理 1.4.1 出货单管理。记录每一笔出货给代销商的数据。并将数据传给库存模块,经审核后自动录入。 1.4.2 结算管理。根据出货单中的金额数据记录应付款,代销商每付一笔款,即从结算款中减去相应的数额,余额继续做为应付款。 1.4.3 销售管理。录入、修改、删除、恢复代销商传来的有关销售数据,传送的方式可用纸质、磁盘、电话线。根据销售数计算自动录入代销点的库存数。 1.4.4 退货(退仓)数据录入、修改、删除、恢复、查看。并将退货数据传给库存模块,由库存审核后自动录入。 1.4.5 保修(保修退仓)数据录入、修改、删除、恢复、查看。并将保修数据传给库存模块,由库存审核后自动录入。 1.4.6 销售统计,并查看和打印统计数据。统计的范围包括某一代销商、全部代销商、包括仓库直接销售,统计的项目为: 1.4.6.1 任意时段所有商品的销售金额、成本、利润合计。 1.4.6.2 任意时段某一商品的销售数量、金额、成本、利润合计。 1.4.6.3 任意时段销售数量、营业额、成本、利润最多、最少的商品。 1.4.6.4 到目前为止,盘点的库存数与上报销售数所推算出的库存数的差额,分别包括数量和金额。 1.4.6.5 任意时段退货金额。 1.4.6.6 任意时段保修金额,及到目前为止尚未保修返还的商品、数量、金额。 1.4.6.7 到目前为止的各代销商及总的应收款金额合计。 1.4.7 盘点。查看、打印盘点表。录入盘点库存数,但不用盘点数修正根据销售数所得的库存数,两个数据都要,并在统计中做比较,以了解代销商押总部货款的数额。 1.5 辅助功能 1.5.1 工作人员管理。 1.5.2 备份。 1.5.3 取备份。 1.5.4 密码管理。 1.5.5 整理数据。将所有数据库重新索引,稽核相关数据。 1.5.6 退出系统。 1.5.7 确认系统日期和时间。 ................... 内容详细文档

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧