常時入力モードで SelectionBackColor プロパティが現在のセルに反映されないのはなぜですか?
対象製品
MultiRow for Windows Forms 7.0J
詳細
セルが編集状態の場合には、CellStyle.SelectionBackColorではなくCellStyle.BackColorが適用されます。これは、既定の設定(GcMultiRow.EditMode=EditOnKeystrokeOrShortcutKey)でセルの背景色を変更している場合に、非編集のセルから編集中のセルに遷移したときの背景色の維持を前提にした仕様によるものです。
常時入力モード(GcMultiRow.EditMode=EditOnEnter)を使用している場合に、選択状態の色(CellStyle.SelectionBackColor)と現在のセルの背景色を一致させるには、次のようにイベントを使用して現在のセルの(選択状態でない)背景色を変更します。
[Visual Basic]
[C#]
常時入力モード(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
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;
}
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;
}
関連情報
- ComboBoxCellの背景色を変更するには?
- 常時入力モードを使用する場合の注意点
- ボタン型セル(ButtonCell)やヘッダ型セル(HeaderCell)の背景色を変更できません
- セル型に応じて常時入力モードを使うかどうかを切り替える方法
キーワード
「背景色」