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

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

но Selected.Rows свойство пусто, а также ActiveRow недвижимость null.

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

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

спасибо.

7 ответов


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

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

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


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

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, который отображается с подсветкой, как и выбранные строки.

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 и не существует в более старых версиях.


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

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

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

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