0

最初の列がコンボボックスの Datagridview があります。ユーザーがリストから 1 つの項目のみを選択するように制限するにはどうすればよいですか。そのため、最初の行でユーザーがすでに「バナナ」を選択している場合、2 行目でバナナを使用することはできません (おそらく、「バナナは既に存在します」というメッセージ ボックスが表示されます)。

ありがとう。

4

1 に答える 1

1

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イベントを使用して現在の行を離れたときに同様のことを行うことです。

于 2012-06-08T12:45:20.707 に答える