private void myDataGrid_MouseDown(object sender, 
System.Windows.Forms.MouseEventArgs e)          //鼠标在datagrid上按下引起的事件
{
   DataGrid myGrid = (DataGrid) sender;
   System.Windows.Forms.DataGrid.HitTestInfo hti;
   hti = myGrid.HitTest(e.X, e.Y);
   switch (hti.Type)            //用于判断鼠标点击的位置
   {
      
      case System.Windows.Forms.DataGrid.HitTestType.Cell : //表示点在网格单元
          messagebox.show(datagrid[行号,列号]);  //弹出想要的数据
         break;
         
     
         
      case System.Windows.Forms.DataGrid.HitTestType.RowHeader : //表示点在行头
         messagebox.show(datagrid[行号,列号]);   //弹出想要的数据
         break;
  
     
     
      }      
}
这里屏蔽了很多事件,
一.获取datagrid控件的列数
dataGrid1.VisibleColumnCount二.获取datagrid控件的行数
dataGrid1.VisibleRowCount三.获取当前选中的列号
dataGrid1.CurrentCell.ColumnNumber四.获取当前选中的行号
dataGrid1.CurrentCell.RowNumber五.获取当前选中单元的值
dataGrid1[datagrid1.currentcell]六.获取指定单元的值
datagrid1[行号,列号]

解决方案 »

  1.   

    你可以做这样一个控件(继承System.Windows.Forms.UserControl),加入一个公共方法和一个属性Result,另外加一个窗口来显示datagrid。在这个弹出的窗口中定义一个公共变result,
    选中某行的时候,就把值赋给result,在控件中添加一个公共方法:
    public void SelectRecord()
    {
    frmSelectTable frm=new frmSelectTable(参数...);
    frm.ShowDialog();
    this.Return = frm.result;
    }
      

  2.   

    to zl2006(巧郁) 我知道怎么获取值,但不知道怎么把值付给父窗口的datagrid里面to jiezhi(風依舊) 能不能说的再清楚一点,没看懂第一个问题呢?怎么解决