常時入力モードで SelectionBackColor プロパティが現在のセルに反映されないのはなぜですか?

文書番号 : 34348     文書種別 : 使用方法     登録日 : 2012/11/21     最終更新日 : 2012/11/21
文書を印刷する
対象製品
MultiRow for Windows Forms 7.0J
詳細
セルが編集状態の場合には、CellStyle.SelectionBackColorではなくCellStyle.BackColorが適用されます。これは、既定の設定(GcMultiRow.EditMode=EditOnKeystrokeOrShortcutKey)でセルの背景色を変更している場合に、非編集のセルから編集中のセルに遷移したときの背景色の維持を前提にした仕様によるものです。

常時入力モード(GcMultiRow.EditMode=EditOnEnter)を使用している場合に、選択状態の色(CellStyle.SelectionBackColor)と現在のセルの背景色を一致させるには、次のようにイベントを使用して現在のセルの(選択状態でない)背景色を変更します。

[Visual Basic]
Imports GrapeCity.Win.MultiRow

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  Dim template1 As Template = Template.CreateGridTemplate(4)
  template1.DefaultCellStyle.SelectionBackColor = Color.Lavender
  GcMultiRow1.Template = template1
  GcMultiRow1.EditMode = EditMode.EditOnEnter
  GcMultiRow1.ViewMode = ViewMode.Row
  GcMultiRow1.RowCount = 5
End Sub

Private Sub GcMultiRow1_CellEnter(ByVal sender As Object, ByVal e As GrapeCity.Win.MultiRow.CellEventArgs) Handles GcMultiRow1.CellEnter
  GcMultiRow1.CurrentCell.Style.BackColor = Color.Lavender
End Sub

Private Sub GcMultiRow1_CellLeave(ByVal sender As Object, ByVal e As GrapeCity.Win.MultiRow.CellEventArgs) Handles GcMultiRow1.CellLeave
  GcMultiRow1.CurrentCell.Style.BackColor = Color.Empty
End Sub


[C#]
using GrapeCity.Win.MultiRow;

private void Form1_Load(object sender, EventArgs e)
{
  Template template1 = Template.CreateGridTemplate(4);
  template1.DefaultCellStyle.SelectionBackColor = Color.Lavender;
  gcMultiRow1.Template = template1;
  gcMultiRow1.EditMode = EditMode.EditOnEnter;
  gcMultiRow1.ViewMode = ViewMode.Row;
  gcMultiRow1.RowCount = 5;
}

private void gcMultiRow1_CellEnter(object sender, GrapeCity.Win.MultiRow.CellEventArgs e)
{
  gcMultiRow1.CurrentCell.Style.BackColor = Color.Lavender;
}

private void gcMultiRow1_CellLeave(object sender, GrapeCity.Win.MultiRow.CellEventArgs e)
{
  gcMultiRow1.CurrentCell.Style.BackColor = Color.Empty;
}

関連情報
キーワード
「背景色」