Infragistics UltraGrid: как убрать выделение по умолчанию первого ряда - PullRequest
15 голосов
/ 12 марта 2009

Я поместил UltraGrid в пользовательский элемент управления WinForms. Я настроил некоторые параметры, чтобы я мог использовать сетку в качестве таблицы выбора нескольких строк только для чтения. Но есть одна проблема: по умолчанию выбран первый ряд.

Но свойство Selected.Rows пусто, а также свойство ActiveRow равно null.

Таким образом, строка, кажется, выделена, но на самом деле это не так, что делает невозможным ее удаление.

Я уверен, что где-то на UltraGrid должна быть скрытая настройка, чтобы контролировать это поведение. И если это не так, то, возможно, есть обходной путь?

Спасибо.

Ответы [ 7 ]

22 голосов
/ 12 марта 2009

После еще одного исследования я нашел решение, которым я поделюсь со всеми вами:

myUltraGrid.DisplayLayout.Override.ActiveCellAppearance.Reset();
myUltraGrid.DisplayLayout.Override.ActiveRowAppearance.Reset();
3 голосов
/ 14 ноября 2014

Это помогло мне в подавлении «активного внешнего вида» сетки:

grid.DisplayLayout.Override.ActiveAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False;

Если вы также не хотите, чтобы строка была помечена как выбранная, вы должны сделать то же самое для «Выбранный вид»:

grid.DisplayLayout.Override.SelectedAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False;
3 голосов
/ 06 марта 2014

попробуйте это:

this.ultraGrid1.SyncWithCurrencyManager = false;
this.ultraGrid1.DisplayLayout.Override.RowSelectors=DefaultableBoolean.False;
3 голосов
/ 03 июня 2009

У меня точно такая же проблема, как и у вас, но решение Джерри Шенк мне не подходит. Я использовал этот трюк: MyUltraGrid.ActiveRow = MyUltraGrid.Rows [0]; MyUltraGrid.ActiveRow = null;

2 голосов
/ 19 января 2016

Важно различать выбранное и активное. Сетка никогда не выделяет какие-либо строки автоматически. То, что вы видите, это ActiveRow, который отображается с подсветкой, как и выбранные строки.

ActiveRow сетки синхронизируется с CurrencyManager, поэтому по умолчанию первая строка сетки отображается подсвеченной. Сброс ActiveRowAppearance и ActiveCellAppearance приведет к удалению выделения по умолчанию из ActiveRow.

        this.ultraGrid1.DisplayLayout.Override.ActiveCellAppearance.Reset();
        this.ultraGrid1.DisplayLayout.Override.ActiveRowAppearance.Reset();

Но важно отметить, что это не мешает строке стать активной строкой, просто сетка больше не выделяет активную строку. Поскольку строка все еще активна (и нет способа предотвратить это), все, что выделяет активную строку, все равно будет выделять строку. Например, если вы загрузите файл библиотеки стилей (* .isl) в свое приложение, которое применяет стиль к ActiveRow, он все равно будет отображаться.

Если вы хотите более тщательно отключить внешний вид активной строки, полностью игнорируя все настройки свойств и настройки библиотеки стилей, вы можете сделать это:

this.ultraGrid1.DisplayLayout.Override.ActiveAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False;

Обратите внимание, что это свойство было добавлено в v9.2 и не существует в более старых версиях.

1 голос
/ 26 мая 2011

Почему-то ни одно из перечисленных выше решений не помогло мне. В моем случае я просто хотел, чтобы активация / выбор вообще не происходили. Итак, я сделал следующее. Возможно, это не лучшее решение, но оно работает.

    private void LayoutVisulizerUltraGrid_AfterRowActivate(object sender, EventArgs e)
    {
        LayoutVisulizerUltraGrid.ActiveRow = null;
    }
0 голосов
/ 06 августа 2015

Отключить выбранную строку в целом, затем установка ActiveRow на ноль должна очистить выбор.

grid.DisplayLayout.Override.SelectTypeRow = Infragistics.Win.UltraWinGrid.SelectType.None;
...