16

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

但是Selected.Rows属性是空的,ActiveRow属性也是null

因此,该行似乎已被选中,但实际上并未选中,因此无法删除选择。

我确定必须在 UltraGrid 的某处隐藏一个设置来控制此行为。如果不是这种情况,那么也许有一种解决方法?

谢谢。

4

7 回答 7

22

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

myUltraGrid.DisplayLayout.Override.ActiveCellAppearance.Reset();
myUltraGrid.DisplayLayout.Override.ActiveRowAppearance.Reset();
于 2009-03-12T15:16:58.537 回答
5

试试这个:

this.ultraGrid1.SyncWithCurrencyManager = false;
this.ultraGrid1.DisplayLayout.Override.RowSelectors=DefaultableBoolean.False;
于 2014-03-06T08:58:40.237 回答
4

我遇到了与您完全相同的问题,但 Gerrie Schenck 的解决方案对我不起作用。我使用了这个技巧: MyUltraGrid.ActiveRow = MyUltraGrid.Rows[0]; MyUltraGrid.ActiveRow = null;

于 2009-06-03T14:42:19.597 回答
4

这帮助我抑制了网格的“活动外观”:

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

如果您也不希望将一行标记为选中,则必须对“Selected Appearance”执行相同操作:

grid.DisplayLayout.Override.SelectedAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False;
于 2014-11-14T13:48:14.873 回答
3

区分 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 中添加的,在旧版本中不存在。

于 2016-01-19T19:10:06.007 回答
1

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

    private void LayoutVisulizerUltraGrid_AfterRowActivate(object sender, EventArgs e)
    {
        LayoutVisulizerUltraGrid.ActiveRow = null;
    }
于 2011-05-26T16:27:57.383 回答
0

完全禁用选定的行,然后设置ActiveRow为 null 应该清除选择。

grid.DisplayLayout.Override.SelectTypeRow = Infragistics.Win.UltraWinGrid.SelectType.None;
于 2015-08-06T06:19:13.570 回答