我在WinForms用户控件上放了一个UltraGrid。我已经调整了一些设置,因此我可以将网格用作只读多行选择表。但是有一个问题:默认情况下,第一行似乎已被选中。
但Selected.Rows
属性为空,ActiveRow
属性为null
。
因此该行似乎已被选中,但事实并非如此,因此无法删除选择。
我确信必须在UltraGrid上的某处隐藏一个设置来控制此行为。 如果情况并非如此,那么可能有一种解决方法吗?
感谢。
答案 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;