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