Infragistics UltraGrid:如何删除第一行的默认选择

时间:2009-03-12 15:01:52

标签: .net winforms infragistics ultragrid

我在WinForms用户控件上放了一个UltraGrid。我已经调整了一些设置,因此我可以将网格用作只读多行选择表。但是有一个问题:默认情况下,第一行似乎已被选中。

Selected.Rows属性为空,ActiveRow属性为null

因此该行似乎已被选中,但事实并非如此,因此无法删除选择。

我确信必须在UltraGrid上的某处隐藏一个设置来控制此行为。 如果情况并非如此,那么可能有一种解决方法吗?

感谢。

7 个答案:

答案 0 :(得分:22)

经过一些研究后,我找到了一个解决方案,我将与大家分享:

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

答案 1 :(得分:3)

我有同样的问题,但Gerrie Schenck的解决方案对我不起作用。 我用过这个伎俩:     MyUltraGrid.ActiveRow = MyUltraGrid.Rows [0];     MyUltraGrid.ActiveRow = null;

答案 2 :(得分:3)

试试这个:

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

答案 3 :(得分:3)

这有助于我抑制网格的“活跃外观”:

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

如果您还不希望将某一行标记为已选中,则必须对“选定外观”执行相同操作:

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

答案 4 :(得分:2)

区分选定和主动是很重要的。网格永远不会自动选择任何行您所看到的是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中添加,在旧版本中不存在。

答案 5 :(得分:1)

不知何故上面列出的解决方案都不适合我。在我的情况下,我只是想激活/选择根本不发生。所以我做了以下几点。它可能不是最好的解决方案,但它确实有效。

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

答案 6 :(得分:0)

完全禁用所选行,然后将ActiveRow设置为null应清除选择。

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