2012-05-22 54 views
6

Tôi đang cố gắng làm cho nó để khi người dùng di chuột qua một hàng trong DataGrid/dataview của tôi, mỗi hàng sẽ hiển thị một kết quả tooltip khác nhau.Chú giải công cụ phụ thuộc vào chuột trên một hàng trong dữ liệu (KHÔNG datagridview)

Tôi thực sự không thể hiểu điều này. với DataGrid làm thế nào tôi có thể nói mouseOver trên mỗi hàng và cung cấp dữ liệu hàng cụ thể? có vẻ như tất cả các nguồn trực tuyến thông thường của tôi đều không có gì!

không nếu có cách để thực hiện công việc này với chế độ xem dữ liệu Tôi không biết cách điền dữ liệu (datagridview) vì bảng của tôi thay đổi theo thời gian mỗi khi chương trình chạy. (chương trình theo dõi tín hiệu, vì vậy nếu có nhiều tín hiệu hơn thì bảng có nhiều hàng hơn ...)

* lưu ý: đây là hình ảnh C# 2.0 trong môi trường studio trực quan 2005.

* đã kết thúc với sau:

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

Trả lời

1

Tại sao bạn không xử lý sự kiện MouseMove trên lưới? Sau đó, bạn có thể chuyển đổi tọa độ của chuột thành hàng điều khiển và thay đổi chú giải công cụ của lưới cho phù hợp.

Cái gì như:

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

như thế nào? nếu tôi đã làm DataGridSignal_MouseMove (đối tượng người gửi, EventArgs e) {??? ??? this.tooltip.settooltip (datagrid, (int) dz.Table.Columns.Count); } Tôi đặt gì bên trong hàm/phương thức? đây là phần mà tôi bị cuốn vào số – DarthSheldon

+0

Tôi đã cập nhật câu trả lời của mình. –

+0

ah, vâng tôi đã thử điều này một lần trước đây, nhưng tôi nhận được một lỗi khi cố gắng để declair 'MouseEventArgs e' trong các tham số chức năng. dữ liệu void riêngGridCurrAlarms_MouseMove (đối tượng người gửi, MouseEventArgs e) { Điểm prop = điểm mới (e.X, e.Y); prop = dataGridCurrAlarms.PointToClient (prop); var hittest = dataGridCurrAlarms.HitTest (prop.X, prop.Y); this.toolTip.SetToolTip (dataGridCurrAlarms, hittest.Row); } là những gì tôi đang cố gắng nhưng vẫn không tốt. var không phải là một điều ... – DarthSheldon

2

Bạn có thể làm điều này trong 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

Tôi không biết gì về XAML hoặc XML Tôi sẽ làm gì với điều này? – DarthSheldon

+0

Bạn không viết trước đó là .NET 2.0. Lấy làm tiếc! – kmatyaszek

+0

không phải lo lắng về điều đó với tôi: P – DarthSheldon

Các vấn đề liên quan