Infragistics UltraGrid: как удалить стандартный выбор первой строки

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

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

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

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

Спасибо.

Ответы

Ответ 1

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

myUltraGrid.DisplayLayout.Override.ActiveCellAppearance.Reset();
myUltraGrid.DisplayLayout.Override.ActiveRowAppearance.Reset();

Ответ 2

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

Ответ 3

попробуйте следующее:

this.ultraGrid1.SyncWithCurrencyManager = false;
this.ultraGrid1.DisplayLayout.Override.RowSelectors=DefaultableBoolean.False;

Ответ 4

Это помогло мне подавить "Active Appearance" сетки:

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

Если вы также не хотите, чтобы строка была отмечена как выбрана, вы должны сделать то же самое для "Selected Appearance":

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

Ответ 5

Важно различать Selected и Active. Сетка никогда не выбирает любые строки автоматически. То, что вы видите, - это 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 и не существует в более старых версиях.

Ответ 6

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

    private void LayoutVisulizerUltraGrid_AfterRowActivate(object sender, EventArgs e)
    {
        LayoutVisulizerUltraGrid.ActiveRow = null;
    }

Ответ 7

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

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