none
Form上、BindingNavigatorの追加ボタンで DataGridViewに新しい行を追加した場合 RRS feed

  • 質問

  • Form上、BindingNavigatorの追加ボタンで DataGridViewに新しい行を追加する場合

    追加ボタンを連続2回押した場合、

    NoNullAllowedException が発生し、Formが落ちますが

    Formが落ちる前に、

                try
                {
                    // NoNullAllowedException 検査
                }
                catch (Exception error)
                {
                    //2回目の操作を無視。。
                }

    このようなことをしたいですが、

    DataGridViewのイベントでできますか?

    それとも、ほかの方法とかありますでしょうか?

     

    宜しくお願い致します。

     

     

    2011年4月13日 5:34

回答

すべての返信

  • 2回目の追加ボタンを押した際に、1回目で表示された新しい行をおそらくデーターテーブルに保存しようとして例外が発生しているのでしょう。英語ですが、以下を参考にして入力チェックを実装してみて下さい。

    DataGridView, BindingNavigator: Adding new lines, NoNullAllowedException
    http://social.msdn.microsoft.com/forums/en-US/winformsdatacontrols/thread/cf42eaf8-1113-43b1-afc5-9604aee69da9/

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク Pinokio-k 2011年4月13日 6:16
    2011年4月13日 6:09
    モデレータ
  • Thanks for your link, the solution you refer to seems to work for the example I posted (VS 2008).
           
    Code Snippet

    void RowValidating(object sender, DataGridViewCellCancelEventArgs e)
    {
      DataGridView dv = (DataGridView)sender;
      DataRowView rv = (DataRowView)dv.CurrentRow.DataBoundItem;

      if (rv != null && rv[0] == DBNull.Value)
      {
         CreateKey();
         if (CheckConstraints(rv))
         {

      rv.CancelEdit();

           e.Cancel = true;
         }
       }
    }



    Regards,
    Andreas Kranister

     

    // [trapemiya]さんのリンクを見たら、この様なコメントがありましたので、助かりました。

    // 有難うございます。

    2011年4月13日 6:18