0

DataGridViewCellC# の編集モードではなく、選択モードでのみ Leave イベントを検出しようとしています。以下に示すコードは、次のとおりです。

      private void dgv_CellLeave(object sender, DataGridViewCellEventArgs e)
      {
              if (dgvC.CurrentCell.ColumnIndex == 0)
              {
                  if (dgv.CurrentCell.Value == null)
                      MessageBox.Show("You have to enter somthing");
              }
      }

    private void dgv_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
              if (dgv.CurrentCell.ColumnIndex == 0)
              {
                  if (dgv.CurrentCell.Value.ToString() !="S" )
                      MessageBox.Show("You have to enter S");
              }

 }

上記のイベントは、グリッド セルを選択しているときに正しく機能しますが、セルの編集中は機能しません。どちらの場合も、Leave イベントが発生していることを意味します。したがって、現在のセルが編集モードまたは選択モードであることを検出したいのですが、その後、カーソルを同じセルに配置する必要があります。変更しないでください。どうすればそれができるか教えてもらえますか?

4

2 に答える 2

1

こんにちは、このイベントを使用してみてください。

    private void dataGridView2_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
    {
        if (dataGridView2.IsCurrentCellDirty)
            if (e.ColumnIndex == 0)
            {
                if (string.IsNullOrWhiteSpace(dataGridView2[e.ColumnIndex, e.RowIndex].EditedFormattedValue.ToString()))
                {
                    e.Cancel = true;
                    MessageBox.Show("Please enter some text before you leave.");
                }
                else if (dataGridView2[e.ColumnIndex, e.RowIndex].EditedFormattedValue.ToString() != "S")
                {
                    e.Cancel = true;
                    MessageBox.Show("You have to enter S");
                }
            }
    }
}
于 2012-12-16T12:28:57.327 に答える
0

セル編集モードでは、CurrentCell を使用せず、"e" パラメータを使用してセルを検索します。

サンプルコード:

private void dgv_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    if (e.ColumnIndex == 0)
    {
        if (dgv[e.ColumnIndex, e.RowIndex].Value.ToString() !="S" )
        {
            MessageBox.Show("You have to enter S");
        }
    }
}
于 2012-12-16T09:15:54.127 に答える