最初の列がコンボボックスの Datagridview があります。ユーザーがリストから 1 つの項目のみを選択するように制限するにはどうすればよいですか。そのため、最初の行でユーザーがすでに「バナナ」を選択している場合、2 行目でバナナを使用することはできません (おそらく、「バナナは既に存在します」というメッセージ ボックスが表示されます)。
ありがとう。
最初の列がコンボボックスの Datagridview があります。ユーザーがリストから 1 つの項目のみを選択するように制限するにはどうすればよいですか。そのため、最初の行でユーザーがすでに「バナナ」を選択している場合、2 行目でバナナを使用することはできません (おそらく、「バナナは既に存在します」というメッセージ ボックスが表示されます)。
ありがとう。
CellValidating
イベントを使用した簡単なソリューションを次に示します。
void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
if (e.ColumnIndex == dataGridView1.Columns["MyCombo"].Index)
{
var query = from DataGridViewRow row in dataGridView1.Rows
where row.Cells[e.ColumnIndex].Value != null && row.Cells[e.ColumnIndex].Value.ToString() == e.FormattedValue.ToString()
where row.Index != e.RowIndex
select row;
if (query.Any())
{
MessageBox.Show(string.Format("{0} already exists", e.FormattedValue.ToString()));
e.Cancel = true;
}
}
}
このイベントは、ユーザーがコンボ ボックスを含むセルを離れようとしたときにトリガーされます。もう 1 つのオプションは、ユーザーがRowValidating
イベントを使用して現在の行を離れたときに同様のことを行うことです。