请问在VS2003 C# 里怎样写datagrid里选定数据行的事件
请看图片
http://www.tamcoparts.com/images/datag.jpg谢谢大家了

解决方案 »

  1.   

    不用写事件,你在datagrid里面点击选择就是在数据源里面遍历,只要把textbox绑定到同一个数据源,就能实现这个功能
      

  2.   

    能详细讲讲吗??
    怎样给textbox绑定呀
      

  3.   

    引自:
    textBox2.DataBindings.Add("Text", dataSet1, "Customers.LastName");
    this.BindingContext[dataSet1, "Customers"].Position = 1;
    更改Position,则textBox2的显示就会变,而在datagrid里面点击选择就起了改变Position的作用
      

  4.   

    我的代码是这样的
    private void Form3_Load(object sender, System.EventArgs e)
    {
    SqlConnection conn=new SqlConnection("server=127.0.0.1;database=mshtcg;uid=sa;pwd=go123;");
        SqlDataAdapter sda=new SqlDataAdapter("select 代码,货物名称,规格,售价 from 货物" ,conn);
    DataSet ds=new DataSet();
    sda.Fill(ds,"tb1");
    this.dataGrid1.DataSource=ds.Tables["tb1"];
    conn.Close();
    textBox1.DataBindings.Add("Text", ds, "tb1.代码");
    this.textBox1.BindingContext[ds, "tb1"].Position = 5;
    }请问这些要放在那里呀
    textBox2.DataBindings.Add("Text", dataSet1, "Customers.LastName");
    this.BindingContext[dataSet1, "Customers"].Position = 1;
      

  5.   

    我那是个示例,你把this.textBox1.BindingContext[ds, "tb1"].Position = 5;这句去掉看看,应该可以了
      

  6.   

    scow(怡红快绿)兄不行呀选择时datagrid默认就会改变Position的值吗??请详细写写代码好吗???
    还有大家也帮帮手啦!!谢谢了
      

  7.   

    老大,没有用的啊,this.BindingContext[dataSet1, "Customers"].Position = 1;
    只是将datagrid中的对应的行(也就是postiong=的值)中的数据加到相应的textbox中去啊,我是要选择某一行,就能把这行数据加到textbox中去啊,(有多个textbox哦,分别对应datagrid中的列哦)
      

  8.   

    MouseDown 事件啦,用HitTest来取值。我给贴一段05里datagridview里的代码,你自己改一下
    DataGridView.HitTestInfo hti = dgvChildrenBirthInfo.HitTest(e.X, e.Y);
                
                switch (hti.Type)
                {
                    case DataGridViewHitTestType.RowHeader:
                        for (int i = 0; i < dgvChildrenBirthInfo.ColumnCount; i++)
                        {
                          //这里面可以取到每一列的值,如果还不会,再问吧。
                        }
                        break;
                    case DataGridViewHitTestType.Cell:
                        for (int i = 0; i < dgvChildrenBirthInfo.ColumnsCount; i++)
                        {                    }
                        break;
                }
      

  9.   

    如果只是要取到值的话,只要datagrid[行,列].value就可以取到值了,行就是你点击的那一行,列你可以自己给,反正也就只那几列。
      

  10.   

    楼上的这位同志,你试过没有,根本就没有datagrid[行,列].value这种用法(在winform中),
    还有其他的方法不?
      

  11.   

    不能使用綁定啊~~ 不是同一個DataView,Position不同
    在DataGrid的DataGrid.BindingContext[dataSet1, "Customers"].PositionChanged中添加方法
    DataRowView drw=(DataRowView)DataGrid.BindingContext[dataSet1, "Customers"].current;
    textBox2.Text=drw["LastName"].ToString();
    ...如果一定要用綁定﹐則先要保証DataGrid的DataView的Sort與TextBox的數據源的DefaultView的sort一致,然后用this.BindingContext[dataSet1, "Customers"].Position=DataGrid.BindingContext[dataSet1, "Customers"].Position
    也是添加在DataGrid.BindingContext[dataSet1, "Customers"].PositionChanged事件中
      

  12.   

    好了!!人多了!!
    大家来谈谈winform 里的datagrid的应用吧!!!datagrid控件的教程网上几乎没有呀!!都是教web form里的.
      

  13.   

    DataSet ds = new DataSet();
                try
                {
                    using (SqlConnection conn = new SqlConnection(@"server=ogogo\ogogo2000;uid=sa;" +
                        "pwd=scow@victory;database=pubs"))
                    {
                        SqlDataAdapter da = new SqlDataAdapter("select title_id,type,title from titles", conn);
                        da.Fill(ds, "title");
                    }
                }
                catch
                {
                }
                
                dataGrid1.DataSource = ds.Tables["title"];
                textBox1.DataBindings.Add("Text", ds.Tables["title"], "title");
      

  14.   

    private void dataGrid1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    int Row=dataGrid1.CurrentCell.RowNumber;
    int Col=dataGrid1.CurrentCell.ColumnNumber; DataGridCell Cell=new DataGridCell(Row,Col);
    MessageBox.Show( dataGrid1[Cell].ToString());
                             //textBox1.Text = dataGrid1[Cell].ToString();
    }嗯,偶是这样做的,不知道是不是你要的结果