ToolTip问题在Datagrid中跳过行

时间:2012-05-23 16:13:17

标签: c# datagrid datatable tooltip c#-2.0

private void datagridSignal_MouseMove(object sender, MouseEventArgs e) 
{         this.toolTip.Hide(datagridSignal);         
this.toolTip.RemoveAll();         
DataTable dt = GetSignalTable();         
DataView dv = new DataView(dt);         
Point prop = new Point(e.X, e.Y);         
System.Windows.Forms.DataGrid.HitTestInfo myHitTest;                 
myHitTest = datagridSignal.HitTest(prop.X, prop.Y);         
this.toolTip.SetToolTip(datagridSignal, " ID = '" + (int)dv[myHitTest.Row][0] + "'  '" + myHitTest.Row + "'"); 
} 

到目前为止,这是我的代码,遗憾的是它并没有提供准确的结果..出于某种原因,即使正在显示正确的索引,它也会随机混淆ID的顺序。

***使用datagrid,而不是datagridview

*** Visualstudio2005环境中的Visual C#2.0

编辑:

private void dataGridSignal_MouseMove(object sender, MouseEventArgs e)
{
  this.toolTip.Hide(dataGridSignal); 
  this.toolTip.RemoveAll(); 
  System.Windows.Forms.DataGrid.HitTestInfo myHitTest;  
  myHitTest = dataGridSignal.HitTest(e.X, e.Y);
  this.toolTip.SetToolTip(dataGridSignal, " ID = " + ((int)this.GetTable().Rows[myHitTest.Row][0]).ToString() + " "+ myHitTest.Row.ToString());
}

1 个答案:

答案 0 :(得分:0)

我不能复制它。这对我有用:

void dg_MouseMove(object sender, MouseEventArgs e) {
  this.toolTip1.Hide(dg);
  this.toolTip1.RemoveAll();

  System.Windows.Forms.DataGrid.HitTestInfo myHitTest = dg.HitTest(e.X, e.Y);

  if (myHitTest.Row > -1) {
    this.toolTip1.SetToolTip(dg, "Over " + dt.Rows[myHitTest.Row][0].ToString());
    this.Text = "Over " + dt.Rows[myHitTest.Row][0].ToString();
  }
}

我只能猜测DataGrid使用的DataSource与来自GetSignalTable的DataSource不同。在我的示例中,dt是我的DataGrid dg正在使用的DataTable。