6

我试图做到这一点,以便当用户将鼠标悬停在我的 DataGrid / dataview 中的一行上时,每一行都会显示不同的工具提示结果。

我无法真正弄清楚这一点。使用 DataGrid 我如何在每一行上说 mouseOver 并给出行特定的数据?似乎我所有常用的在线资源都没有出现!

不是如果有办法使用datagridview进行这项工作,我不知道如何填充它(datagridview),因为每次程序运行时我的表的长度都会变化。(程序会跟踪信号,所以如果收到更多信号,那么表格就会有更多行......)

*注意:这是 Visual Studios 2005 环境中的 Visual 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;
        prop = datagridSignal.PointToClient(prop);
        myHitTest = datagridSignal.HitTest(prop.X, prop.Y);
        this.toolTip.SetToolTip(datagridSignal, " ID = '" + (int)dv[myHitTest.Row][0] + "' ");
}
4

2 回答 2

2

为什么不在网格上处理 MouseMove 事件?然后,您可以将鼠标的坐标转换为行句柄并相应地更改网格的工具提示。

就像是:

private void dataGrid_MouseMove(object sender, MouseEventArgs e) {
 var point = dataGrid.PointToClient(e.X, e.Y);
 var hittest = dataGrid.HitTest(point.X, point.Y);
 toolTip1.SetToolTip(dataGrid, hittest.Row); // add Tooltip conotrol to the form!!!
}
于 2012-05-22T18:56:48.947 回答
2

您可以在 XAML 中执行此操作:

<extToolkit:DataGrid Name="dgData" AutoGenerateColumns="False">
            <extToolkit:DataGrid.RowStyle>
                <Style TargetType="{x:Type extToolkit:DataGridRow}">
                    <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Mode=Self}, Path=DataContext.ID}" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </extToolkit:DataGrid.RowStyle>
            <extToolkit:DataGrid.Columns>
                <extToolkit:DataGridTextColumn Header="ID" Binding="{Binding ID}" />
                <extToolkit:DataGridTextColumn Header="First Data" Binding="{Binding FirstData}" />
                <extToolkit:DataGridTextColumn Header="Second Data" Binding="{Binding SecondData}" />               
            </extToolkit:DataGrid.Columns>
        </extToolkit:DataGrid>
于 2012-05-22T19:24:45.097 回答