2012-05-22 3 views
6

Я пытаюсь сделать так, чтобы, когда пользователь переводит строки в моем DataGrid/dataview, каждая строка будет отображать другой результат подсказки.Динамическая подсказка в зависимости от мыши над строкой в ​​datagrid (NOT datagridview)

Я не могу это понять. с DataGrid, как я могу сказать mouseOver в каждой строке и предоставить данные, специфичные для строки? похоже, что все мои обычные онлайн-источники ничего не вызывают!

нет, если есть способ сделать эту работу с datagridview. Я не знаю, как ее заполнить (datagridview), так как моя таблица меняется по длине каждый раз, когда запускается программа. (программа отслеживает сигналы, поэтому, если получено больше сигналов, тогда в таблице больше строк ...)

* примечание: это визуальный C# 2.0 в визуальных студиях 2005 года.

* закончилась со следующими:

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

ответ

1

Почему бы вам не справиться 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!!! 
} 
+0

как? если я сделал DataGridSignal_MouseMove (отправитель объекта, EventArgs e) {??? ??? this.tooltip.settooltip (DataGrid, (INT) dz.Table.Columns.Count); } что я должен вставить внутри функции/метода? это часть, на которой я догнал – DarthSheldon

+0

Я обновил свой ответ. –

+0

ах, да, я пробовал это раньше, но я получаю сообщение об ошибке при попытке объявить «MouseEventArgs e» в параметрах функции. личная информация об отсутствии данныхGridCurrAlarms_MouseMove (объект отправитель, MouseEventArgs e) { Point prop = new Point (e.X, e.Y); prop = dataGridCurrAlarms.PointToClient (prop); var hittest = dataGridCurrAlarms.HitTest (prop.X, prop.Y); это.toolTip.SetToolTip (dataGridCurrAlarms, hittest.Row); } - это то, что я пытаюсь, но все же ничего хорошего. var - это не вещь ... – DarthSheldon

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

Я ничего не знаю о XAML или XML , что бы я сделал с этим? – DarthSheldon

+0

Вы раньше не писали, что это .NET 2.0. Сожалею! – kmatyaszek

+0

не беспокоится, что на меня: P – DarthSheldon

 Смежные вопросы

  • Нет связанных вопросов^_^