読み取り専用に設定しても、BackSpaceキーが有効になる

文書番号 : 23501     文書種別 : 不具合     最終更新日 : 2007/02/08
文書を印刷する
対象製品
El Tabelle MultiRow 4.0J
発生環境
この現象は、次のファイルバージョンのアセンブリで発生します。
v4.0.2006.0112 および以前のアセンブリ
状況
修正済み
詳細
EditorのReadOnlyプロパティを設定しても、該当セルがアクティブのときにBackSpaceキーを押下すると表示内容がクリアされます。
回避方法
この現象は、ファイル バージョン v4.0.2007.0202 以降のアセンブリで修正されています。v4.0.2007.0202 のホットフィックス(HotFix)は、こちらから取得できます。

または次の方法で回避します。
(1) CanActivateプロパティをfalseに設定する方法
VB
template.Cells(0, 0).CanActivate = False
template.Cells(1, 0).CanActivate = False
template.Cells(2, 0).CanActivate = False

C#
template.Cells[0, 0].CanActivate = false;
template.Cells[1, 0].CanActivate = false;
template.Cells[2, 0].CanActivate = false;


(2) KeyDownイベントでキャンセルする方法
VB
  Private Sub MultiRowSheet1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MultiRowSheet1.KeyDown
    If e.KeyCode = Keys.Back Then
      '対象セルにセルキー cellA,cellB.cellCを割り当てています。
      Dim caseA As Boolean = (MultiRowSheet1.ActiveCellKey = "cellA")
      Dim caseB As Boolean = (MultiRowSheet1.ActiveCellKey = "cellB")
      Dim caseC As Boolean = (MultiRowSheet1.ActiveCellKey = "cellC")
      If (caseA Or caseB Or caseC) Then
        e.Handled = True
      End If
    End If
  End Sub

C#
    private void multiRowSheet1_KeyDown(object sender, KeyEventArgs e)
  {
    if (e.KeyCode == Keys.Back)
    {
      bool caseA = (multiRowSheet1.ActiveCellKey == "cellA");
      bool caseB = (multiRowSheet1.ActiveCellKey == "cellB");
      bool caseC = (multiRowSheet1.ActiveCellKey == "cellC");
      if (caseA || caseB || caseC)
      {
        e.Handled = true;
      }
    }
  }

キーワード
ETMR05945

この文書は、以前は次のバグレポートIDで公開されていました : 6809