[FlexGrid for WPF] CellEditEndedイベントでStartEditingメソッドを実行して、2回クリックすると例外が発生する

文書番号 : 80528     文書種別 : Bug
登録日 : 2013/10/31     最終更新日 : 2013/11/29

対象製品

Studio for WPF

ステータス

修正済み

詳細

CellEditEndedイベントでStartEditingメソッドを実行して、その後任意の場所を2回クリックすると、ArgumentOutOfRangeException例外が発生します。

回避方法

例外が発生する問題は4.0.20133.367で修正されました。
ただし、CellEditEndedイベントでStartEditingメソッドを実行しても、編集が終了したままになります。この現象はWPF/Silverlightの実行タイミングに起因する制限事項です。

CellEditEndedイベントで再度編集を開始するには、Dispatcher.BeginInvokeメソッドを使用してStartEditingを非同期で実行する必要があります。

◎サンプルコード (Visual Basic)
Private Sub c1FlexGrid1_CellEditEnded(sender As Object, e As CellEditEventArgs)
  If c1FlexGrid1(e.Row, e.Column).ToString() = "" Then
    MessageBox.Show("値を入力してください")
    Dispatcher.BeginInvoke(Sub()
      c1FlexGrid1.StartEditing(True, e.Row, e.Column)
    End Sub)
  End If
End Sub

◎サンプルコード (C#)
private void c1FlexGrid1_CellEditEnded(object sender, CellEditEventArgs e)
{
  if (c1FlexGrid1[e.Row, e.Column].ToString() == "")
  {
    MessageBox.Show("値を入力してください");
    Dispatcher.BeginInvoke((Action)(() =>
    {
      c1FlexGrid1.StartEditing(true, e.Row, e.Column);
    }));
  }
}