実行時にセルごとにSelectableプロパティをFalseに設定していくと、現在のセルが移動する

文書番号 : 40640     文書種別 : 技術情報     登録日 : 2017/07/26     最終更新日 : 2017/07/26
文書を印刷する
対象製品
MultiRow for Windows Forms 10.0J
詳細
実行時にセルごとにSelectableプロパティをFalseに設定する処理をすべてのセルに対して行うと、現在のセルが選択不可になって次のセルに移動するいう動作を繰り返します。そのため、MultiRowのスクロールバーが移動する動作になります。

現在のセルが移動する動作を抑止するには、SelectableプロパティをFalseに設定する処理の前に、CurrentCellプロパティにNothingを設定してアクティブなセルをなくします。

[Visual Basic]
Imports GrapeCity.Win.MultiRow

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  GcMultiRow1.Template = Template.CreateGridTemplate(50)
  GcMultiRow1.RowCount = 50
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  ' 【回避策】アクティブなセルをなくします。
  GcMultiRow1.CurrentCell = Nothing

  For row As Integer = 0 To GcMultiRow1.Rows.Count - 1
    For cell As Integer = 0 To GcMultiRow1.Template.Row.Cells.Count - 2
      GcMultiRow1(row, cell).Selectable = False
    Next
  Next
End Sub


[C#]
using GrapeCity.Win.MultiRow;

private void Form1_Load(object sender, EventArgs e)
{
  gcMultiRow1.Template = Template.CreateGridTemplate(50);
  gcMultiRow1.RowCount = 50;
}

private void button1_Click(object sender, EventArgs e)
{
  // 【回避策】アクティブなセルをなくします。
  gcMultiRow1.CurrentCell = null;

  for (int row = 0; row < gcMultiRow1.RowCount; row++)
  {
    for (int cell = 0; cell < gcMultiRow1.Template.Row.Cells.Count - 1; cell++)
    {
      gcMultiRow1[row, cell].Selectable = false;
    }
  }
}