Vous pouvez trouver les coordonnées des colonnes par rapport à la GridControl
et traduire ensuite en Form
coordonnées. Pour cela, vous pouvez utiliser GridColumnsInfo
que vous pouvez obtenir à partir de GridViewInfo.ColumnsInfo
propriété. Pour obtenir GridViewInfo
vous pouvez utiliser gridView.GetViewInfo()
méthode.
Une fois que vous aurez trouvé les coordonnées, vous devrez vous abonner aux événements qui se produisent à différents endroits. GridView
y GridControl
changements. Par exemple, vous pouvez vous abonner à GridView.Layout
et GridView.LeftCoordChanged
événements. Pour le redimensionnement, vous devez vous abonner à GridControl.Resize
événement.
Exemple :
private void UpdatePosition(GridView gridView, string columnName, Control control)
{
var column = gridView.Columns[columnName];
if (column == null) return;
var viewInfo = (GridViewInfo)gridView.GetViewInfo(); //using DevExpress.XtraGrid.Views.Grid.ViewInfo
var columnInfo = viewInfo.ColumnsInfo[column];
if (columnInfo != null)
{
var bounds = columnInfo.Bounds; //column's rectangle of coordinates relative to GridControl
var point = PointToClient(gridView.GridControl.PointToScreen(bounds.Location)); //translating to form's coordinates
control.Left = point.X;
control.Top = point.Y - control.Height;
control.Width = bounds.Width;
control.Show();
}
else
control.Hide();
}
Vous pouvez appeler cette méthode pour chaque événement auquel vous avez souscrit.