我已经将一个UltraGrid放在了一个WinForms用户控件上。 我已经调整了一些设置,以便将网格用作只读多行选择表格。 但是有一个问题:默认情况下,第一行似乎被选中。
但是Selected.Rows
属性为空,并且ActiveRow
属性为null
。
因此,该行似乎被选中,但实际上并没有,这使得无法取消选择。
我相信在UltraGrid中一定有一个隐藏的设置来控制此行为。 如果不是这种情况,那么也许有一个解决方法?
谢谢。
我已经将一个UltraGrid放在了一个WinForms用户控件上。 我已经调整了一些设置,以便将网格用作只读多行选择表格。 但是有一个问题:默认情况下,第一行似乎被选中。
但是Selected.Rows
属性为空,并且ActiveRow
属性为null
。
因此,该行似乎被选中,但实际上并没有,这使得无法取消选择。
我相信在UltraGrid中一定有一个隐藏的设置来控制此行为。 如果不是这种情况,那么也许有一个解决方法?
谢谢。
经过一些研究,我已经找到了解决方案,现在将其分享给大家:
myUltraGrid.DisplayLayout.Override.ActiveCellAppearance.Reset();
myUltraGrid.DisplayLayout.Override.ActiveRowAppearance.Reset();
试试这个:
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;
我有与你完全相同的问题,但Gerrie Schenck的解决方案对我不起作用。我使用了这个技巧: MyUltraGrid.ActiveRow = MyUltraGrid.Rows[0]; MyUltraGrid.ActiveRow = null;
重要的是要区分选定和活动状态。网格永远不会自动选择任何行,您看到的是ActiveRow,它显示为与选定行相同的高亮。
网格的ActiveRow与CurrencyManager同步,因此默认情况下,网格的第一行会出现高亮显示。重置ActiveRowAppearance和ActiveCellAppearance将从ActiveRow中删除默认的高亮显示。
this.ultraGrid1.DisplayLayout.Override.ActiveCellAppearance.Reset();
this.ultraGrid1.DisplayLayout.Override.ActiveRowAppearance.Reset();
this.ultraGrid1.DisplayLayout.Override.ActiveAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False;
不知何故,上面列出的解决方案都对我无效。在我的情况下,我只是希望根本不进行激活/选择。因此,我采取了以下措施。这可能不是最好的解决方案,但它有效。
private void LayoutVisulizerUltraGrid_AfterRowActivate(object sender, EventArgs e)
{
LayoutVisulizerUltraGrid.ActiveRow = null;
}
禁用选定的行,然后将 ActiveRow
设置为 null 应该清除选择。
grid.DisplayLayout.Override.SelectTypeRow = Infragistics.Win.UltraWinGrid.SelectType.None;