16

WinFormsユーザーコントロールにUltraGridを配置しました。グリッドを読み取り専用の複数行の選択テーブルとして使用できるように、いくつかの設定を調整しました。ただし、問題が1つあります。デフォルトでは、最初の行が選択されているように見えます。

ただし、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 に答える
4

これは、グリッドの「アクティブな外観」を抑制するのに役立ちました。

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

行を選択済みとしてマークしたくない場合は、「選択された外観」についても同じことを行う必要があります。

grid.DisplayLayout.Override.SelectedAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False;
于 2014-11-14T13:48:14.873 に答える
4

私はあなたが抱えていたのとまったく同じ問題を抱えていますが、Gerrie Schenck の解決策は私にはうまくいきません. 私はこのトリックを使用しました: MyUltraGrid.ActiveRow = MyUltraGrid.Rows[0]; MyUltraGrid.ActiveRow = null;

于 2009-06-03T14:42:19.597 に答える
3

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 で追加されたもので、古いバージョンには存在しないことに注意してください。

于 2016-01-19T19:10:06.007 に答える
1

どういうわけか、上記の解決策はどれもうまくいきませんでした。私の場合、アクティブ化/選択がまったく起こらないようにしたかっただけです。だから私は次のことをしました。最善の解決策ではないかもしれませんが、うまくいきます。

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