Infragistics UltraGrid:最初の行のデフォルト選択を削除する方法
-
11-07-2019 - |
質問
UltraGridをWinFormsユーザーコントロールに配置しました。グリッドを読み取り専用の複数行選択テーブルとして使用できるように、いくつかの設定を調整しました。ただし、1つの問題があります。デフォルトでは、最初の行が選択されているように見えます。
ただし、 Selected.Rows
プロパティは空で、 ActiveRow
プロパティは null
です。
したがって、行は選択されているように見えますが、実際には選択されていないため、選択を削除することはできません。
この動作を制御するには、UltraGridのどこかに設定を非表示にする必要があります。 これが当てはまらない場合は、回避策がありますか?
ありがとう。
解決
さらに調査を重ねた結果、解決策を見つけました。それを皆さんと共有します。
myUltraGrid.DisplayLayout.Override.ActiveCellAppearance.Reset();
myUltraGrid.DisplayLayout.Override.ActiveRowAppearance.Reset();
他のヒント
あなたとまったく同じ問題を抱えていますが、ジェリー・シェンクの解決策はうまくいきません。 私はこのトリックを使用しました: MyUltraGrid.ActiveRow = MyUltraGrid.Rows [0]; MyUltraGrid.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;
SelectedとActiveを区別することが重要です。グリッドが自動的に行を選択することはありません。表示されているのはActiveRowで、選択された行と同じように強調表示されます。
グリッドのActiveRowはCurrencyManagerと同期されるため、デフォルトではグリッドの最初の行が強調表示されます。 ActiveRowAppearanceとActiveCellAppearanceをリセットすると、ActiveRowからデフォルトのハイライトが削除されます。
this.ultraGrid1.DisplayLayout.Override.ActiveCellAppearance.Reset();
this.ultraGrid1.DisplayLayout.Override.ActiveRowAppearance.Reset();
ただし、これは行がアクティブな行になるのを防ぐわけではなく、グリッドがアクティブな行を強調表示しなくなることに注意することが重要です。行はまだアクティブなので(これを防ぐ方法はありません)、アクティブな行を強調表示する他のものはすべて行を強調表示します。たとえば、ActiveRowにスタイルを適用するアプリケーションにスタイルライブラリ(* .isl)ファイルをロードした場合でも、表示されます。
すべてのプロパティ設定とスタイルライブラリ設定を完全に無視して、より徹底的な方法でアクティブな行の外観を無効にする場合は、次の操作を実行できます。
this.ultraGrid1.DisplayLayout.Override.ActiveAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False;
このプロパティはv9.2で追加され、古いバージョンには存在しないことに注意してください。
どういうわけか、上記のソリューションはどれも私にとってはうまくいきませんでした。私の場合、アクティベーション/選択がまったく発生しないようにしたかっただけです。だから私は次のことをした。最善の解決策ではないかもしれませんが、機能します。
private void LayoutVisulizerUltraGrid_AfterRowActivate(object sender, EventArgs e)
{
LayoutVisulizerUltraGrid.ActiveRow = null;
}
選択した行をすべて無効にしてから、 ActiveRow
をnullに設定すると、選択がクリアされます。
grid.DisplayLayout.Override.SelectTypeRow = Infragistics.Win.UltraWinGrid.SelectType.None;