読み取り専用に設定しても、BackSpaceキーが有効になる
対象製品
El Tabelle MultiRow 4.0J
発生環境
この現象は、次のファイルバージョンのアセンブリで発生します。
v4.0.2006.0112 および以前のアセンブリ
v4.0.2006.0112 および以前のアセンブリ
状況
修正済み
詳細
EditorのReadOnlyプロパティを設定しても、該当セルがアクティブのときにBackSpaceキーを押下すると表示内容がクリアされます。
回避方法
この現象は、ファイル バージョン v4.0.2007.0202 以降のアセンブリで修正されています。v4.0.2007.0202 のホットフィックス(HotFix)は、こちらから取得できます。
または次の方法で回避します。
(1) CanActivateプロパティをfalseに設定する方法
VB
C#
(2) KeyDownイベントでキャンセルする方法
VB
C#
または次の方法で回避します。
(1) CanActivateプロパティをfalseに設定する方法
VB
template.Cells(0, 0).CanActivate = False
template.Cells(1, 0).CanActivate = False
template.Cells(2, 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;
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
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;
}
}
}
{
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