[ELTB05684]クリップボード操作がシートの表示モードに依存する
対象製品
El Tabelle for .NET 3.0J
発生環境
動作保証環境と同じ
詳細
Sheet.ViewMode プロパティを Row または Column に設定しているとき、Excel でコピーしたセルまたはセル範囲を Sheet に貼り付けることができません。
Excel で行全体や列全体を選択しコピーした場合は、Sheet に貼り付けることができます。
Excel で行全体や列全体を選択しコピーした場合は、Sheet に貼り付けることができます。
回避方法
この現象は、製品の仕様によるものです。クリップボード操作は ViewMode プロパティの設定に依存します。たとえば、ViewMode プロパティを列単位に設定したとき、クリップボード操作も列単位で行う必要があります。
この制限を回避するには、クリップボード操作が行われる直前に Sheet.ViewMode プロパティを切り替えます。
[Visual Basic]
Private Sub Form1_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Form1.Load
Sheet1.ViewMode = GrapeCity.Win.ElTabelle.ViewMode.Row
Sheet1.AllowClipboard = True
End Sub
Private Sub Sheet1_KeyDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyEventArgs) Handles Sheet1.KeyDown
Dim objSheet As GrapeCity.Win.ElTabelle.Sheet = _
CType(sender, GrapeCity.Win.ElTabelle.Sheet)
If e.Control = True Then
If e.KeyCode = Keys.V Then
objSheet.Redraw = False
'Sheet 内でコピーが行われたときのために、
'UIPaste メソッドを2回実行します。
objSheet.UIPaste()
objSheet.ViewMode = GrapeCity.Win.ElTabelle.ViewMode.Default
objSheet.UIPaste()
objSheet.ViewMode = GrapeCity.Win.ElTabelle.ViewMode.Row
objSheet.Redraw = True
End If
End If
End Sub
[C#]
private void Form1_Load(object sender, EventArgs e)
{
sheet1.ViewMode = GrapeCity.Win.ElTabelle.ViewMode.Row;
sheet1.AllowClipboard = true;
}
private void sheet1_KeyDown(object sender, KeyEventArgs e)
{
GrapeCity.Win.ElTabelle.Sheet objSheet =
(GrapeCity.Win.ElTabelle.Sheet)sender;
if(e.Control == true)
{
objSheet.Redraw = false;
//Sheet 内でコピーが行われたときのために、
//UIPaste メソッドを2回実行します。
objSheet.UIPaste();
objSheet.ViewMode = GrapeCity.Win.ElTabelle.ViewMode.Default;
objSheet.UIPaste();
objSheet.ViewMode = GrapeCity.Win.ElTabelle.ViewMode.Row;
objSheet.Redraw = true;
}
}
この制限を回避するには、クリップボード操作が行われる直前に Sheet.ViewMode プロパティを切り替えます。
[Visual Basic]
Private Sub Form1_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Form1.Load
Sheet1.ViewMode = GrapeCity.Win.ElTabelle.ViewMode.Row
Sheet1.AllowClipboard = True
End Sub
Private Sub Sheet1_KeyDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyEventArgs) Handles Sheet1.KeyDown
Dim objSheet As GrapeCity.Win.ElTabelle.Sheet = _
CType(sender, GrapeCity.Win.ElTabelle.Sheet)
If e.Control = True Then
If e.KeyCode = Keys.V Then
objSheet.Redraw = False
'Sheet 内でコピーが行われたときのために、
'UIPaste メソッドを2回実行します。
objSheet.UIPaste()
objSheet.ViewMode = GrapeCity.Win.ElTabelle.ViewMode.Default
objSheet.UIPaste()
objSheet.ViewMode = GrapeCity.Win.ElTabelle.ViewMode.Row
objSheet.Redraw = True
End If
End If
End Sub
[C#]
private void Form1_Load(object sender, EventArgs e)
{
sheet1.ViewMode = GrapeCity.Win.ElTabelle.ViewMode.Row;
sheet1.AllowClipboard = true;
}
private void sheet1_KeyDown(object sender, KeyEventArgs e)
{
GrapeCity.Win.ElTabelle.Sheet objSheet =
(GrapeCity.Win.ElTabelle.Sheet)sender;
if(e.Control == true)
{
objSheet.Redraw = false;
//Sheet 内でコピーが行われたときのために、
//UIPaste メソッドを2回実行します。
objSheet.UIPaste();
objSheet.ViewMode = GrapeCity.Win.ElTabelle.ViewMode.Default;
objSheet.UIPaste();
objSheet.ViewMode = GrapeCity.Win.ElTabelle.ViewMode.Row;
objSheet.Redraw = true;
}
}
この文書は、以前は次のFAQ IDで公開されていました : 6380