DevExpress WinForms Grid: Hit Information (Информация о попадании мышью на контрол)
Источник: https://www.youtube.com/watch?v=fdA1r81ELNY&list=PL8h4jt35t1wixbBtVkQ9X_y8Uz_U7KBop&index=12
Включение всплытия подсказок над элеменом управления
private void toolTipController1_GetActiveObjectInfo(object sender, DevExpress.Utils.ToolTipControllerGetActiveObjectInfoEventArgs e) { if(e.SelectedControl != gridControl) return; GridHitInfo hitInfo = gridView.CalcHitInfo(e.ControlMousePosition); object o = hitInfo.HitTest.ToString(); string t = hitInfo.HitTest.ToString(); e.Info = new DevExpress.Utils.ToolTipControlInfo(o, t); }
Определение элемента упраления включение/отключение фильтрации
/// <summary> /// Метод позовляет определить в какой области таблицы была нажата ПРАВАЯ кнопка (e.Button & MouseButtons.Right) и включить фильтр по значению в ячейке строки, включить/выключить фильтрация по столбцу (если было попадание в заголовок столца) и сбросить все фильтры если мышь попала в левую часть автофильтра /// </summary> /// <param name="sender"></param> /// <param name="e">аргументы мыши (берем какая кнопка нажата и координаты мыши)</param> private void gridControl_MouseDown(object sender, MouseEventArgs e) { GridHitInfo hitInfo = gridView.CalcHitInfo(new Point(e.X, e.Y)); // проверка нажата правая кнопка мыши и находится ли тестовая точка в строке таблицы if(((e.Button & MouseButtons.Right) != 0) && (hitInfo.InRow)) { // свойство RowHandle проверяет был ли щелчок на строке автофильтра всех строк if (hitInfo.RowHandle == GridControl.AutoFilterRowHandle) // если щелчок (контрольная точка) находится в индикаторе автоматической фильтрации строк if (hitInfo.HitTest == GridHitTest.RowIndicator) // то очищаются ВСЕ фильтры gridView.ActiveFilter.Clear(); else // иначе очищается только конкретный фильтр hitInfo.Column.FilterInfo = new ColumnFilterInfo(); // если щелчок был не в области индикатора строк, то он должен быть в одном из столбцов else { // находим целевой столбец с помощью свойства столбца объект информации о попадании и очистим фильтр только для этого столбца object value = gridView.GetRowCellValue(hitInfo.RowHandle, hitInfo.Column); hitInfo.Column.FilterInfo = new ColumnFilterInfo(hitInfo.Column, value); } } }