1
私はWindowsフォームプロジェクトで作業しています。私のフォームでは、すべての行に記入する必要がある列を持つDataGridがあります。WinForms DataGridView、必須の列を設定する
MS Mangement Studioと似たようなものを入手したいと思います。現在の行の必須セルが満たされていない場合、別の行を追加できませんでした。
どうすればいいですか?
私はWindowsフォームプロジェクトで作業しています。私のフォームでは、すべての行に記入する必要がある列を持つDataGridがあります。WinForms DataGridView、必須の列を設定する
MS Mangement Studioと似たようなものを入手したいと思います。現在の行の必須セルが満たされていない場合、別の行を追加できませんでした。
どうすればいいですか?
CellValidiating
イベントを使用して列の値を確認します。
このような何か:
const int MandatoryColumnIndex = 1;
public Form1()
{
InitializeComponent();
dataGridView1.CellValidating += new DataGridViewCellValidatingEventHandler(dataGridView1_CellValidating);
dataGridView1.RowValidating += new DataGridViewCellCancelEventHandler(dataGridView1_RowValidating);
}
private void dataGridView1_RowValidating(object sender, DataGridViewCellCancelEventArgs e)
{
if (dataGridView1.Rows[e.RowIndex].Cells[MandatoryColumnIndex].FormattedValue.ToString() == string.Empty)
{
e.Cancel = true;
dataGridView1.Rows[e.RowIndex].Cells[MandatoryColumnIndex].ErrorText = "Mandatory";
}
else
{
dataGridView1.Rows[e.RowIndex].Cells[MandatoryColumnIndex].ErrorText = string.Empty;
}
}
private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
if (e.ColumnIndex == MandatoryColumnIndex)
{
if (e.FormattedValue.ToString() == string.Empty)
{
dataGridView1[e.ColumnIndex, e.RowIndex].ErrorText = "Mandatory";
e.Cancel = true;
}
else
{
dataGridView1[e.ColumnIndex, e.RowIndex].ErrorText = string.Empty;
}
}
}
私は、コードのあなたの部分をしようとしていますが、何か問題があります:私はそれが動作必須のセルを編集した場合、私は唯一の他のセルを埋める場合は、必須の空を残します、私はすべての行を追加することができます。それは良くありません – davioooh
'RowValidating'イベントも使用できます。私は例を示すためにコードを修正しました。 – Dave
素晴らしい!できます!ありがとうございました! (私は 'RowValidating'イベントだけを使って解決しました) – davioooh