对象引用未设置为组合框对象的实例
本文关键字:对象 实例 组合 设置 对象引用 | 更新日期: 2023-09-27 18:11:27
我见过许多对象引用没有设置为对象问题的实例,但我无法在任何情况下找到我的场景。
我有一个名为comboBox1
的组合框。当表单加载时,我有代码来填充combobox:
private void Form1_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the
// 'tenderDBDataSet.tbl_Tender_To_Details' table.
// You can move, or remove it, as needed.
OleDbCommand cmd = new OleDbCommand("SELECT DISTINCT
tbl_Tender_To_Details.To_Name, tbl_Tender_To_Details.To_Address1,
tbl_Tender_To_Details.To_Address2,
tbl_Tender_To_Details.To_City, tbl_Tender_To_Details.To_PinCode "+
"FROM tbl_Tender_To_Details "+
"WHERE to_Name IS NOT NULL ", conn);
try
{
conn.Open();
OleDbDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
comboBox1.Items.Add(reader["To_Name"]);
// listBox1.Items.Add(reader[0].ToString());
// MessageBox.Show(reader[0].ToString());
}
reader.Close();
comboBox1.SelectedIndex = 0;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
MessageBox.Show(comboBox1.SelectedValue.ToString());
}
MessageBox.Show(comboBox1.SelectedValue.ToString());
行显示:
"对象引用未设置为组合框对象的实例".
但是我惊讶的是索引0的值被设置为组合框,而表单加载后这个对象引用msg框
你可以试着把这个语句放在页面加载,并确保组合框是否加载了项目?
comboBox1.SelectedIndex = 0;
如果您使用的是winforms,那么请尝试将该语句放入initializecomponent()函数
comboBox1.SelectedIndex = 0;
首先,不要显式地将所选索引设置为0。缺省值为0。有可能在执行阅读器后没有从数据库加载任何内容,因此组合框的DataSource为空。在这种情况下,如果您尝试将所选索引设置为0,那么当框架试图检索数据源中为空的第一项时,将抛出null引用异常。在这个场景中,您选择的索引应该是-1。
因此,如果您希望所选索引是列表中的第一项,我不会显式设置所选项。这是组合框的默认行为。
首先,您是否尝试使用调试器来检查阅读器是否实际放置了任何东西?
我注意到你在读者中大写了"To_Name",但在where子句中没有大写-你确定它不区分大小写吗?
其次,由于您正在使用数据库,因此更简单的方法是将函数的db结果返回到DataTable中,然后使用Databinding。
"Object reference not set to an instance of an object for combo box".
Means one or two things normally.
combobox not initialized to null;
or combobox not initalized to new
ComboBox combobox = null;
then inside of the try set the combobox variable to an instance of new like the following
Try
{
combobox = new Combobox();
}
当尝试使用.SelectedValue
时,我得到了同样的错误信息。我把它改为.SelectedItem
,错误消失了。例子:
string selection = comboBox1.SelectedItem.ToString();
试试这个
if (ComboWeeks.SelectedItem as WeeksTable is null)
return;
this is work for me