2012-01-05 656 views
1

これは私の前の質問からのフォローアップの質問です。あなたはそれを見つけることができますhereDataGridViewセルの編集モードを自動的に終了する方法は?

最後に私の前の問題を解決した後、別の問題が発生しました。私はDataGridの新しい行に値を追加するボタンを割り当て、セル全体を編集モードにします。 /または行の終わりまでタブで表示されます(明らかにこれは機能しません)、編集モードを終了します。 私はdataGridView.BeginEdit(true);を使用して編集モードを開始し、テキストボックスに値を解析できるようにしました(これまでの質問を参照)。したがって、別の値を挿入してボタンを押すと、現在編集モードになっているため、以前に挿入された古い値が新しい値に置き換えられます。 、dataGridView.EndEdit(DataGridViewDataErrorContexts.Commit);cell.DataGridView.EndEdit()およびcell.DataGridView.EndEdit(DataGridViewDataErrorContexts.Commit);を使用しようとしていましたが、編集モードが終了しないようです:( ボタンを押すと、テキストボックス内の値が最初のテキストボックスの列に挿入されますこれは既に働いていました)その後、編集モードを終了するために他の列をクリックしたり塗りつぶす必要はありませんので、テキストボックスに何も入力しないでボタンを押して停止します。 誰でもこれを解決する方法を知っていますか? sample image EDIT 1:赤い円を見てください。一番上のものは現在編集モードになっています。矢印)。下のものは編集モードではありません(私は手動で選択しましたコンボボックスからアイテムを取り出す)。

private void button1_Click(object sender, EventArgs e) 
    { 
     this.surat_jalanDataGridView.AllowUserToAddRows = true; 
     string tokNum = this.textBox1.Text; 

     if (this.textBox1.Text != "") 
     { 
      foreach (DataGridViewRow sjRow in this.surat_jalanDataGridView.Rows) 
      { 
       int RowIndex = surat_jalanDataGridView.RowCount - 1; 
       DataGridViewRow R = surat_jalanDataGridView.Rows[RowIndex]; 

       DataTable table = new DataTable(); 
       DataRow newRow = table.NewRow(); 
       table.Rows.Add(newRow); 

       DataGridViewCell cell = R.Cells[2]; 
       this.surat_jalanDataGridView.CurrentCell = cell; 
       this.surat_jalanDataGridView.BeginEdit(true); 

       R.Cells[2].Value = tokNum; 
       cell.DataGridView.EndEdit(DataGridViewDataErrorContexts.Commit); 
      } 
     } 
     this.surat_jalanDataGridView.EndEdit(DataGridViewDataErrorContexts.Commit); 
    } 

EDIT 2: は、ここに私の前の質問から要求されるように私のコードですので、私はドラッグして、私のWindowsフォームにデータソースからsurat_jalanをドロップします。それは自動的にプロパティ名surat_jalanDataGridViewを持つデータグリッドとなり、データ・ソースは、遅延については申し訳ありませんsurat_jalanBindingSource img 2

+0

あなたのwinformに 'this.Validate'を使用することもできます –

+0

私はすでにGabrielを試しましたが、どちらも動作しません。しかし、とにかくありがとう:D –

+0

なぜあなたはいつもbeginitを呼び出しているときにbegineditを使いますか?あなたは編集モードに入ることなくあなたの価値を設定することができます。編集モードは、ユーザーが入力を入力するためのモードです。 –

答えて

1

です。 DataGridViewへのバインディングの設定方法を見て、グリッドがバインドされているデータを編集する方法について、より適切なガイダンスを提供することができます。 Visual StudioのデータソースビューからテーブルをドラッグしてDataGridViewにドロップしたとき、Visual Studioはいくつかのことを行いました。どのようにデータを操作することができるのかを理解するために、行われたことの基本を少なくとも理解することが重要です。 This MSDN記事Visual StudioからWindowsフォームコントロールへのバインドを設定する方法。最後のセクションでは、何をしているのかを説明します。最後の文"DataGridViewコントロールは、ドラッグしたテーブルにバインドされました。DataSet、TableAdapter、およびBindingSourceがコンポーネントトレイに表示されます。が重要です。 Visual Studioではコントロールをテーブルにバインドしたコードが生成されているため、データを直接編集してデータグリッドビューを更新する必要があります。この場合、生成されたDataSetで作業する必要があります(私はそれがsurat_jalanDataSetという名前であると仮定しています)。 Hereは、データセットのデータを編集する方法の説明です。あなたの特定の場合Adding Rows。これがあなたの目標を達成するのに役立つかどうか教えてください。

関連する問題