2012-05-22 5 views
6

Ich versuche es so zu machen, dass, wenn der Benutzer über eine Zeile in meinem DataGrid/dataview mauset, jede Zeile ein anderes Tooltip-Ergebnis anzeigen würde.Dynamische Tooltip abhängig von der Maus über eine Zeile in einem Datagrid (NOT datagridview)

Ich kann das nicht wirklich herausfinden. Mit DataGrid Wie kann ich mouseOver in jeder Zeile sagen und zeilenspezifische Daten geben? scheint, als ob alle meine üblichen Online-Quellen nichts aufgedeckt haben!

nicht, wenn es eine Möglichkeit gibt, dies mit einem Datagridview funktionieren zu lassen Ich weiß nicht, wie ich es (Datagridview) füllen kann, da meine Tabelle bei jedem Ausführen des Programms in der Länge variiert. (Das Programm verfolgt Signale, wenn mehr Signale empfangen werden, dann hat die Tabelle mehr Zeilen ...)

* Hinweis: Dies ist Visual C# 2.0 in Visual Studios 2005 Umgebung.

* endete mit folgenden:

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

Antwort

1

Warum gehst du nicht Mousemove-Ereignis auf dem Netz umgehen? Sie können dann die Koordinaten der Maus in den Zeilengriff umwandeln und den Tooltip des Rasters entsprechend ändern.

Etwas wie:

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

wie? wenn ich DataGridSignal_MouseMove (Objekt Absender, EventArgs e) {??? ??? this.tooltip.settooltip (Datagrid, (int) dz.Table.Columns.Count); } Was stelle ich in die Funktion/Methode? Dies ist der Teil, in dem ich gefangen bin – DarthSheldon

+0

Ich habe meine Antwort aktualisiert. –

+0

ah, yeah Ich habe das schon einmal probiert, aber ich bekomme einen Fehler, wenn ich versuche, in den Funktionsparametern 'MouseEventArgs e' zu deklarieren. private void dataGridCurrAlarms_MouseMove (Objekt Absender, MouseEventArgs e) { Punkt prop = neuer Punkt (e.X, e.Y); prop = dataGridCurrAlarms.PointToClient (prop); var hittest = dataGridCurrAlarms.HitTest (prop.X, prop.Y); this.toolTip.SetToolTip (dataGridCurrAlarms, hittest.Row); } ist was ich versuche, aber immer noch nicht gut. var ist nicht eine Sache ... – DarthSheldon

2

Sie können dies in XAML tun:

<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

Ich weiß nichts über XAML oder XML was würde ich damit machen? – DarthSheldon

+0

Sie haben nicht zuvor geschrieben, dass es .NET 2.0 ist. Es tut uns leid! – kmatyaszek

+0

keine Sorge, dass man bei mir ist: P – DarthSheldon

Verwandte Themen