Инфраструктура сверхсетевая:как удалить выделение первой строки по умолчанию

StackOverflow https://stackoverflow.com/questions/639037

Вопрос

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

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

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

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

Спасибо.

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

Если вы также не хотите, чтобы строка была помечена как выделенная, вы должны сделать то же самое для "Выбранного внешнего вида".:

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

Важно различать Выбранные и Активные.Сетка никогда не выбирает какие-либо строки автоматически, то, что вы видите, - это 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;

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

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

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

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

grid.DisplayLayout.Override.SelectTypeRow = Infragistics.Win.UltraWinGrid.SelectType.None;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top