[ELTB03207]ボタン型セルやラベル型セルのキャプションを消去できる場合がある
対象製品
El Tabelle for .NET 2.0J
発生環境
この現象はすべてのアセンブリで発生します。
詳細
ボタン型セルやラベル型セルにおいて、セルの値(Cell.Value)をキャプションとして使用しているとき、[Del] キーの入力によってこれらのセルのキャプションを消去できてしまいます。
[Visual Basic]
Imports GrapeCity.Win.ElTabelle.Editors
Dim objButtonEditor As New ButtonEditor(Nothing)
Sheet1(0, 0).Value = "Button"
Sheet1(0, 0).Editor = objButtonEditor
Dim objLabelEditor As New LabelEditor
Sheet1(0, 1).Value = "Label"
Sheet1(0, 1).Editor = objLabelEditor
[C#]
using GrapeCity.Win.ElTabelle.Editors;
ButtonEditor objButtonEditor = new ButtonEditor(null);
sheet1[0, 0].Value = "Button";
sheet1[0, 0].Editor = objButtonEditor;
LabelEditor objLabelEditor = new LabelEditor();
sheet1[0, 1].Value = "Label";
sheet1[0, 1].Editor = objLabelEditor;
[Visual Basic]
Imports GrapeCity.Win.ElTabelle.Editors
Dim objButtonEditor As New ButtonEditor(Nothing)
Sheet1(0, 0).Value = "Button"
Sheet1(0, 0).Editor = objButtonEditor
Dim objLabelEditor As New LabelEditor
Sheet1(0, 1).Value = "Label"
Sheet1(0, 1).Editor = objLabelEditor
[C#]
using GrapeCity.Win.ElTabelle.Editors;
ButtonEditor objButtonEditor = new ButtonEditor(null);
sheet1[0, 0].Value = "Button";
sheet1[0, 0].Editor = objButtonEditor;
LabelEditor objLabelEditor = new LabelEditor();
sheet1[0, 1].Value = "Label";
sheet1[0, 1].Editor = objLabelEditor;
回避方法
この現象は製品の仕様によるものです。
次のいずれかの操作を行うことで現象を回避できます。
・ボタン型セルとラベル型セルの Text プロパティを使用する。(ButtonEditor.Text, LabelEditor.Text)
・ボタン型セルとラベル型セルで [Del] キーの入力を無効にする
[Visual Basic]
Private Sub Sheet1_KeyDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyEventArgs) Handles Sheet1.KeyDown
If e.KeyValue = Keys.Delete Then
'Delキーの場合
If TypeOf Sheet1.ActiveCell.Editor Is LabelEditor Then
'ラベル型セルの場合、キー入力を無効にする
e.Handled = True
ElseIf TypeOf Sheet1.ActiveCell.Editor Is ButtonEditor Then
'ボタン型セルの場合、キー入力を無効にする
e.Handled = True
End If
End If
End Sub
[C#]
private void sheet1_KeyDown(object sender,
System.Windows.Forms.KeyEventArgs e)
{
if(e.KeyValue.Equals((int)Keys.Delete) == true)
{
if((sheet1.ActiveCell.Editor as LabelEditor) != null)
{
//ラベル型セルの場合、キー入力を無効にする
e.Handled = true;
}
else if((sheet1.ActiveCell.Editor as ButtonEditor) != null)
{
//ボタン型セルの場合、キー入力を無効にする
e.Handled = true;
}
}
}
次のいずれかの操作を行うことで現象を回避できます。
・ボタン型セルとラベル型セルの Text プロパティを使用する。(ButtonEditor.Text, LabelEditor.Text)
・ボタン型セルとラベル型セルで [Del] キーの入力を無効にする
[Visual Basic]
Private Sub Sheet1_KeyDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyEventArgs) Handles Sheet1.KeyDown
If e.KeyValue = Keys.Delete Then
'Delキーの場合
If TypeOf Sheet1.ActiveCell.Editor Is LabelEditor Then
'ラベル型セルの場合、キー入力を無効にする
e.Handled = True
ElseIf TypeOf Sheet1.ActiveCell.Editor Is ButtonEditor Then
'ボタン型セルの場合、キー入力を無効にする
e.Handled = True
End If
End If
End Sub
[C#]
private void sheet1_KeyDown(object sender,
System.Windows.Forms.KeyEventArgs e)
{
if(e.KeyValue.Equals((int)Keys.Delete) == true)
{
if((sheet1.ActiveCell.Editor as LabelEditor) != null)
{
//ラベル型セルの場合、キー入力を無効にする
e.Handled = true;
}
else if((sheet1.ActiveCell.Editor as ButtonEditor) != null)
{
//ボタン型セルの場合、キー入力を無効にする
e.Handled = true;
}
}
}
この文書は、以前は次のFAQ IDで公開されていました : 4459