簡體   English   中英

ComboBoxCell值無效

[英]ComboBoxCell Value is not valid

我有一個datagridview綁定到BindingList,在此列表中,我有組合框綁定到一個列表,該列表是我的BindingList的屬性,以更好地理解:

ListA --->綁定到datagridview

ListA.ListB --->綁定到組合框

當我打開表單時,可以完全設置顯示ListB內值的組合框,但是當我添加新項時出現錯誤(值無效),代碼如下:

private void dataGridView_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
    ((DataGridViewComboBoxColumn)dataGridView.Columns["Names"]).DisplayIndex = 4;
    for (int i = 0; i < People.Count; i++)
    {
        var cell = (DataGridViewComboBoxCell)dataGridView.Rows[i].Cells["Names"];
        cell.DataSource = People[i].Names;
        cell.Value = People[i].Names[0];
    }
}

上面的代碼很好用,問題發生在這里:

private void dataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
    if (dataGridView.CurrentCell.ColumnIndex != dataGridView.Columns["Names"].Index)
        return;
    var cell = (DataGridViewComboBoxCell)dataGridViewICAO.CurrentCell;
    if (cell.EditedFormattedValue.ToString().Equals(String.Empty)) return;
    var regex = new Regex("[a-zA-Z]");
    if (!regex.IsMatch(cell.EditedFormattedValue.ToString()))
        e.Cancel = true;
    else
    {
        People[cell.RowIndex].Names.Add(cell.EditedFormattedValue.ToString());
        cell.Value = People[cell.RowIndex].Names.Last();
        People[cell.RowIndex].Names = cell.Value.ToString();
    }
}

在行代碼上cell.Value = People[cell.RowIndex].Names.Last(); 我得到了例外...謝謝大家!

這是我設置組合框的方式:

private void AddComboBox()
    {
        var comboNames = new DataGridViewComboBoxColumn { Name = "cmbNames", HeaderText = "Names" };
        dataGridView.Columns.Add(comboNames);
    }

private void dataGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            if (dataGridView.CurrentCell.ColumnIndex == dataGridView.Columns["cmbNames"].Index)
            {
                var combo = e.Control as ComboBox;
                if (combo == null)
                    return;

                combo.DropDownStyle = ComboBoxStyle.DropDown;
            }
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM