9

C# 3.5 の WinForm アプリケーションに DataGridView があります。

AllowUserToAddNewRowプロパティが true に設定されています。ユーザーが DataGridView にテキストを入力すると、別の新しい行が DataGridView に自動的に追加されます。現在の行でいくつかのチェックが実行され、必要なすべての情報がそこに入力されるまで、この新しい行を追加したくありません。

例: 空の行を持つ DataGridView があります。 空白行が 1 つある DataGridView

入力を開始すると、新しい行が追加されますが、これは早すぎます。

私が欲しいのは、ユーザーが数量を入力した後にのみ新しい行が追加されることです:

4

5 に答える 5

5

AllowUserToAddNewRow = false を設定します。たとえば、データソースに空白行を最初に追加します。DataGridView を DT という DataTable にバインドしている場合は、直前に

dataGridView1.DataSource = DT;

次のようなことをします

 DT.Rows.Add(DT.NewRow());

これは、最初のレコードを入力できるように、最初に 1 つの空白行を用意するためです。次に、イベント dataGridView1.CellEndEdit を処理し、そのイベントで次のように記述します。

void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
        if (e.ColumnIndex == 1)//The index of your Quantity Column
        {
            int qty = (int)DT.Rows[e.RowIndex][e.ColumnIndex];
            if (qty > 0)//Your logic if required
            {
                DT.Rows.Add(DT.NewRow());                    
            }
        }
    }
于 2012-04-03T07:06:52.893 に答える
1

私はこれが古いことを知っています。最も簡単な方法は、デザインビューから「追加を有効にする」のチェックを外すことです

ここに画像の説明を入力

于 2015-07-05T02:30:06.223 に答える
0

CellClickのイベントでは、自分がどの列にいるかを確認してから、次のような新しい行を追加できると思います。DataGridView1.Rows.Add()

于 2012-04-03T06:47:22.930 に答える
0

これが達成される方法です。

a) を使用して、RowLeave イベントで現在の行の内容を確認できます。

String.IsNullOrWhiteSpace(GridPGLog.Rows[e.RowIndex].Cells[0].value.toString())
using (or) Cells[0] || cells[1] || cell[2] || ..

エラーが見つかった場合は、フォーカスをエラー セルに設定し、ユーザーにデータの入力を強制します。

DataGridViewRow rowToSelect = this.dgvJobList.CurrentRow;
rowToSelect.Selected = true;
rowToSelect.Cells[0].Selected = true;
this.dgvJobList.CurrentCell = rowToSelect.Cells[0];

b) または、[保存] ボタンを配置し、foreach ループを使用して新しく追加されたすべての行を確認することができます

于 2012-04-03T08:16:38.247 に答える