在WinForm方式下,DataGrid绑定3列
数量(quantity),价格(price),金额(money=quantity*price)
修改数量列、价格的时候如何出发事件,验证输入正确性,另外,修改金额数值同时,最下面添加1列,显示总共数量多少,金额多少?
谢谢
解决给分
呵呵

解决方案 »

  1.   

    如果你使用vs.net,那么就十分简单,在窗体选中要发出事件的控件(这里假设是一个TextBox控件),然后点击属性窗那个带有闪电的小按钮(限于c#),在类表中找到你处理的事件,双击,或者填上你的事件处理方法名称,在代码页的事件处理方法中写你的处理代码就可以了。
    如果你是手工编写事件处理,还是一TextBox控件为例,假设你的TextBox的对象是TextBox1,
    那么你在窗体构造器里面添上一行代码:  TextBox1.TextChanged+=new System.EventHandler(TextBox1_TextChanged);然后创建一个事件处理方法:private void TextBox1_TextChanged(object sender, System.EventArgs e)
    {
    //在这里编写你的代码
    }实际上,都是一样的,vs.net帮你做好了本该由你自己来做的事情。在vs.net中,事件的注册是写在InitializeComponent里面的。在没有使用vs.net ide的情况下,你可以在构造器中做同样的事情。
      

  2.   

    也不说清楚,害我敲了老半天,告诉你DataGrid的TextChanged事件不是用来处理你的类的内容更新的,你可以使用CurrentCellChanged事件,这个事件你输入一个字段以后,移到另外一个单元格的时候发出。添加统计功能,不需要在dataGrid中做,你可以另外使用控件放在DataGrid下面,每一次事件触发的时候,刷新统计控件的内容(也就是重新计算统计值)
      

  3.   

    不好意思,前面没说明关于DataGrid的。
    谢谢了
    请问修改数量时,如何得到后面的价格,以及如何修改金额的数值?
    关键是得到Cell的寄宿空件TextBox
    我的事件如下:
    private void dataGrid1_CurrentCellChanged(object sender, System.EventArgs e)
    {
    TextBox tb=(TextBox)sender;
    string txt=tb.Text.Trim();
    if(txt==""||txt=="(空)")
    {
    txt="0";
    }
    double quantity=-1;
    try
    {
    quantity=Convert.ToDouble(txt);
    }
    catch{}
    if(quantity==-1)
    {
    MessageBox.Show("请输入正确的数量!","警告",MessageBoxButtons.OK,MessageBoxIcon.Error);
    tb.Focus();
    }
        //下面得到价格以及修改金额数值,该如何做?
        //谢过
     }