6

ユーザーがDataGrid/dataviewの行にマウスを合わせると、各行に異なるツールチップの結果が表示されるようにしようとしています。

私はこれを本当に理解することはできません。DataGridを使用して、各行でmouseOverと言い、行固有のデータを与えるにはどうすればよいですか?私のいつものオンラインソースはすべて何も表示されていないようです!

datagridviewを使用してこれを機能させる方法がある場合は、プログラムを実行するたびにテーブルの長さが変化するため、データグリッドビュー(datagridview)にデータを入力する方法がわかりません。(プログラムは信号を追跡するので、より多くの信号が受信されると、テーブルにはより多くの行があります...)

*注:これは、Visual Studio 2005環境のビジュアル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

これは 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 に答える
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 に答える