2012-05-22 33 views
6

Próbuję zrobić tak, aby po kliknięciu myszki nad wierszem w widoku DataGrid/dataview, każdy wiersz wyświetlałby inny wynik z podpowiedzi.Dynamiczna podpowiedź w zależności od wskaźnika myszy na wierszu w datagridzie (NIE datagridview)

Nie mogę tego naprawdę zrozumieć. z DataGrid jak mogę powiedzieć mouseOver w każdym wierszu i podać dane specyficzne dla wiersza? Wygląda na to, że wszystkie moje zwykłe źródła online niczego nie znalazły!

Nie, jeśli jest sposób na wykonanie tej pracy z datagridview, nie wiem jak go zapełnić (datagridview), ponieważ moja tabela ma różną długość przy każdym uruchomieniu programu. (program śledzi sygnały, więc jeśli więcej sygnałów zostanie odebranych, wtedy tabela ma więcej wierszy ...)

* Uwaga: to wizualne C# 2.0 w środowisku wizualnym studia 2005.

* zakończył się z następujących czynności:

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] + "' "); 
} 

Odpowiedz

1

Dlaczego nie można obsłużyć zdarzenie mouseMove na starcie? Następnie można przekształcić współrzędne myszy do uchwytu wiersza i odpowiednio zmienić etykietę siatki.

Coś jak:

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!!! 
} 
+0

jak? jeśli robiłem DataGridSignal_MouseMove (obiekt nadawca, EventArgs e) {??? ??? this.tooltip.settooltip (datagrid, (int) dz.Table.Columns.Count); } co umieściłem w funkcji/metodzie? to jest część, którą złapałem na – DarthSheldon

+0

Zaktualizowałem swoją odpowiedź. –

+0

ah, yeah Próbowałem już raz, ale dostaję błąd podczas próby deklarowania "MouseEventArgs e" w parametrach funkcji. prywatne dane voidGridCurrAlarms_MouseMove (obiekt nadawcy, MouseEventArgs e) { Point prop = new Point (e.X, e.Y); prop = dataGridCurrAlarms.PointToClient (prop); var hittest = dataGridCurrAlarms.HitTest (prop.X, prop.Y); this.toolTip.SetToolTip (dataGridCurrAlarms, hittest.Row); } jest tym, co próbuję, ale nadal nie jest dobre. var nie jest rzeczą ... – DarthSheldon

2

Można to zrobić w 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> 
+0

Nie wiem nic na temat XAML lub XML co mam z tym zrobić? – DarthSheldon

+0

Nie napisałeś wcześniej, że jest .NET 2.0. Przepraszam! – kmatyaszek

+0

nie martw się, że jest na mnie: P – DarthSheldon