UltraGrid でクリックした行をハイライトしたりそれ以外の行をローライトしたりする場合は、

  1. ハイライトとローライトそれぞれの Appearance オブジェクトを用意し、
  2. ハイライト用の Appearance は DisplayLayout.Override.SelectedRowAppearance プロパティ(選択された行の Appearance を設定するプロパティ)に設定し、
  3. ローライト用の Appearance については、AfterSelectChange イベント(選択されているオブジェクト(セル、列、行のいずれか)に変更があった場合に発生するイベント)のイベントハンドラーでローライト用の Appearance と元の外観とを切り替える処理をする。

で可能です。

 

1. ハイライトとローライトそれぞれの Appearance オブジェクトを用意する

private Infragistics.Win.Appearance _selectedRowAppearance;
private Infragistics.Win.Appearance _lowlightRowAppearance;

public Form1()
{
    InitializeComponent();

    ...

    // ハイライト用の Appearance
    this._selectedRowAppearance = new Infragistics.Win.Appearance()
    {
        ForeColor = Color.OrangeRed,
        BackColor = Color.White
    };

    // ローライト用の Appearance
    this._lowlightRowAppearance = new Infragistics.Win.Appearance()
    {
        ForeColor = Color.LightGray,
        BackColor = Color.White,
    };
}

 

2. ハイライト用の Appearance を DisplayLayout.Override.SelectedRowAppearance プロパティに設定する

private void UltraGrid1_InitializeLayout(object sender, Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs e)
{
    // セルクリック時の動作を行選択にする。
    // ※セルクリック時の既定の動作は編集モードに入る、です。
    // ※今回はクリックしたらその行を選択できるようにした方が操作性が良くなるので、この設定もしておきます。
    e.Layout.Override.CellClickAction = Infragistics.Win.UltraWinGrid.CellClickAction.RowSelect;

    // https://jp.infragistics.com/help/winforms/wingrid-setting-cell-active-and-selected-appearance
    e.Layout.Override.ActiveAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False; // アクティブ時の外観変更を無効化
    e.Layout.Override.SelectedAppearancesEnabled = Infragistics.Win.DefaultableBoolean.True;    // 選択時の外観変更を有効化
    e.Layout.Override.SelectedRowAppearance = this._selectedRowAppearance;  // 行選択時の外観を設定
}

 

3. ローライト用の Appearance については、AfterSelectChange イベントのイベントハンドラーでローライト用の Appearance と元の外観とを切り替える処理をする

// 選択操作もしくは非選択操作が起こった時のイベントハンドラーの実装
// https://jp.infragistics.com/help/winforms/wingrid-working-with-selected-rows
private void UltraGrid1_AfterSelectChange(object sender, Infragistics.Win.UltraWinGrid.AfterSelectChangeEventArgs e)
{
    // 選択行がある場合
    if (this.ultraGrid1.Selected.Rows.Count > 0)
    {
        // 行のデフォルトの外観をローライトの外観にする。
        // ※結果、選択行の外観についてはInitializeLayoutで指定しているので、
        // ※それ以外の行、つまり非選択行がローライトの外観になります。
        this.ultraGrid1.DisplayLayout.Override.RowAppearance = this._lowlightRowAppearance;
    }
    // 選択行がない場合
    else
    {
        // 行のデフォルトの外観をクリアする。
        this.ultraGrid1.DisplayLayout.Override.RowAppearance = null;
    }
}

 

実行結果

 

サンプル

 

API リファレンス

 

Tagged:

製品について

Ultimate UI for Windows Forms