日期:2014-05-20  浏览次数:20954 次

双击dataGridView后的数据传递
请问我如何双击dataGridView中某一行后跳出一个窗体,并把双击dataGridView中某一行的数据传入跳出的窗体的文本框

------解决方案--------------------
刚好在给老婆写家庭账务软件,下面是其中的一部有,应该有你要的吧.


//---------根据指针指向的凭证表数据显示其分录表数据---------
private void dataGrid1_CurrentCellChanged(object sender, System.EventArgs e)
{
da2.SelectCommand.Parameters[0].Value=txt4.Text.Trim();
newTable.Clear();
da2.Fill(newTable);
dataGrid2.ReadOnly=true;
}


//----------双击分录表表格,添加新的分录记录----------
private void dataGrid2_DoubleClick(object sender, System.EventArgs e)
{
if(this.enableDoubleClick==true)
{
this.doubleClicked();
}
}

//--------------确定鼠标在表格中的点击模式--------------
private void dataGrid2_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
//获取当前点击鼠标时的时间
DataGrid myGrid = (DataGrid)sender;
System.Windows.Forms.DataGrid.HitTestInfo myHitTest;

myHitTest = dataGrid2.HitTest(e.X,e.Y);
if ( myHitTest.Type == System.Windows.Forms.DataGrid.HitTestType.Cell )
gridMouseDownTime = DateTime.Now;
}

//------------处理鼠标在dataGrid上的单击事件-----------
private void TextBoxMouseDownHandler(object sender, MouseEventArgs e )
{
//第一个判断条件:在单元格的textbox中的双击(即单击DataCell,使它获得焦点后,然后再响应该Cell中的双击事件)
//第二个判断条件:DataGrid 的 DoubleClick(直接双击Cell就响应双击事件,无须先单击Cell,使它获得焦点,然后再响应双击事件)
//判断时间间隔是否小于控制面板中所定义的双击间隔时间
if((e.Button == MouseButtons.Left && e.Clicks == 2 || DateTime.Now < gridMouseDownTime.AddMilliseconds(SystemInformation.DoubleClickTime))&&(this.enableDoubleClick==true))
{
this.doubleClicked();
}
}

//-------双击分录表表格,添加新的分录数据-----------
private void doubleClicked()
{
newTable.Rows.Add(newTable.NewRow()); //向表中添加一行,保持总有一个新行
SelectSubject newFrm=new SelectSubject();
newFrm.ShowDialog();
int rowNumber=dataGrid2.CurrentCell.RowNumber;
dataGrid2[rowNumber,0]=mID;
dataGrid2[rowNumber,1]=mName;
dataGrid2[rowNumber,2]= "0 ";
dataGrid2[rowNumber,3]= "0 ";
SendKeys.Send( "{Tab} ");//向活动应用程序发送Tab键,跳到下一控件
}
------解决方案--------------------
改下你的HR_edit窗体的构造函数:

private string s;
public HR_edit(string str)
{
s=str;
}
------解决方案--------------------
try..

private void dataGridView1_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
{

DataGridViewRow dr = this.dataGridView1.CurrentRow;
string s = dr.Cells[0].Value.ToString();
s1 = dr.Cells[1].Value.ToString();
s2 = dr.Cells[2].Value.ToString();

HR_edit HR1 = new HR_edit(s,s1,s2);
HR1.Show();
}


目标窗口:

private string s;
private string s1;
private string s2;

public Hr_edit(string str1,string str2,string str3)
{
s=str1;
s1=str2;
s2=str3;
}
private void HR_edit_Load(object sender, EventArgs e)
{
comboBox1.Items.Add( "管理员权限 ");
comboBox1.Items.Add( "普通权限 ");

textBox1 .text=s
textBox2 .text=s1
textBox3 .text=s2




}