コンボボックス型セルを使用し CellNotify イベントで編集終了を設定すると、StackOverflowException が発生する場合がある。

文書番号 : 22641     文書種別 : 不具合     最終更新日 : 2006/09/26
文書を印刷する
対象製品
El Tabelle for .NET 3.0J
発生環境
この現象は、次のファイルバージョンのアセンブリで発生します。
v3.2.2006.0720 および以前のアセンブリ
状況
修正済み
詳細
コンボボックス型セルを使用し CellNotify の Drop Close イベントで、Sheet.EditState プロパティをfalse に設定(MultiRowSheetの場合は、KeyActionにEditStateを設定)すると StackOverflowException が発生します。
例えば、次に示すコーディングを実施し、「ドロップダウンリストを選択したときに編集を確定する」 ことを実現したい場合に、本現象が発生します。

Sheetの場合:
 [Visual Basic]
 Select Case e.Name
   Case DropClose
        Sheet1.EditState = False
 End Select
 
 [C#]
  switch(e.Name.ToString())
  {
   case "DropClose":
   sheet1.EditState = false;
   break;
  }
 
MultiRowSheetの場合:
[Visual Basic]
Select Case e.Name
  Case DropClose
  MultiRowSheet1.KeyAction(MKeyAction.EndEdit)
End Select
 
[C#]
switch(e.Name.ToString())
{
  case "DropClose":
  multiRowSheet1.KeyAction(MKeyAction.EndEdit);
  break;
}
回避方法
この現象は、ファイル バージョン v3.2.2006.0915 以降のアセンブリで修正されています。

修正版は こちら からダウンロードできます。

但し、ファイル バージョン v3.2.2006.0915 以降のアセンブリで、本現象が発生する目的の処理は実現できません。 例外発生のみ抑止しております。 本現象が発生する目的の処理を実現させたい場合は、次のどちらかの回避策を適用してください。

1. 拡張コンボボックス型セルを使用する。
 
2. "SelectedIndexChanged"イベントでKeyActionをEndEditに変更する。
Sheetの場合:
[Visual Basic]
  Select Case e.Name
    Case SelectedIndexChanged
    Sheet1.KeyAction(KeyAction.EndEdit)
  End Select
    
[C#]
  switch (e.Name.ToString())
  {
    case "SelectedIndexChanged":
    sheet1.KeyAction(KeyAction.EndEdit);
    break;
  }
 
MultiRowSheetの場合:
[Visual Basic]
Select Case e.Name
  Case SelectedIndexChanged
  MultiRowSheet1.KeyAction(MKeyAction.EndEdit)
End Select
 
[C#]
switch(e.Name.ToString())
{
  case "SelectedIndexChanged":
  multiRowSheet1.KeyAction(MKeyAction.EndEdit);
  break;
}
キーワード
ELTB05646

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