【问题标题】:ToolTip issue skipping Rows in Datagrid工具提示问题跳过 Datagrid 中的行
【发布时间】:2012-05-23 16:13:16
【问题描述】:
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 的顺序。

***使用数据网格,而不是数据网格视图

***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());
}

【问题讨论】:

  • 你不能用datagridSignal代替dt和dv吗?连同 prop 变量,它们似乎都没有必要。
  • 是的,这会清理代码,但我想我会使用变量来使问题尽可能清晰。它无助于解决我的问题。

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


【解决方案1】:

我无法复制它。这对我有用:

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 使用的数据源与来自GetSignalTable 的数据源不同。在我的示例中,dt 是我的 DataGrid dg 正在使用的 DataTable。

【讨论】:

  • 勾选了,遗憾的是这没什么区别
  • @DarthSheldon 更新了答案。我只能猜测您的GetSignalTable 与网格实际使用的不同。
  • 可能不会,因为其他几个函数使用我的 gettable 函数,它们看起来还不错
  • @DarthSheldon 而不是GetSignalTable,为什么不尝试投射它:DataTable dt = (DataTable)dataGridSignal.DataSource;
  • 好的,所以你是一个聪明的人。通过使用 DataView dv = (DataView)dataGridSignal.DataSource;现在它就像一个顶部。荣誉!
猜你喜欢
  • 2014-12-10
  • 1970-01-01
  • 2016-11-03
  • 2023-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-02
相关资源
最近更新 更多