DataGridView中的ComboBox新行(WinForms)

时间:2013-12-23 15:29:35

标签: c# datagridview combobox

我正在使用DataGridView和ComboBox。当我在DataGridView中使用新行开始时,我在DefaultValuesNeeded事件中使用Guid.NewGuid()创建一个新的Guid。这很好,但当我移动到下一个(新)行时,我收到以下错误消息:“对象引用未设置为对象的实例”

相关代码

DataTable dt = new DataTable(); 
CombBox cb = (ComboBox)sender; 
string item = cb.SelectedValue.ToString(); 
dt = ta.GetData(item); 
dgvMain.CurrentRow.Cells[2].Value = dt.Rows[0]["text"].ToString();

更新

为了解我的理解,“SelectedIndexChanged”会在我创建新行时提前发布。在这个阶段,DataTable尚未填充,这就是它引发异常的原因。如果我错了,请纠正我。我修复了我的代码,现在就运行了......

private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {

            lp.ITDataSetTableAdapters.lp002_TableAdapter ta = new ITDataSetTableAdapters.lp002_TableAdapter();
            DataTable dt = new DataTable();
            string item = "";
            ComboBox cb = (ComboBox)sender;
            if (cb.SelectedValue != null)
            {
                item = cb.SelectedValue.ToString();
                dt = ta.GetData(item);
                if (dt.Rows.Count > 0)
                {
                    dgvMain.CurrentRow.Cells[2].Value = dt.Rows[0]["text"].ToString();
                }
            }

        }
        catch (Exception Ex)
        {
            MessageBox.Show(Ex.Message);
        }
    }

0 个答案:

没有答案