For starters, don't do it like that! Never concatenate strings to build a SQL command. It leaves you wide open to accidental or deliberate SQL Injection attack which can destroy your entire database. Use Parametrized queries instead.
Second, You need to open the connection before you try to use the reader.
Third, don't use a DataReader - they need everything alive while they are running, and your connection is closed before the combobox can load. Use a DataAdapter and a DataTable instead:
try
{
using (SqlConnection con = new SqlConnection(strConnect))
{
con.Open();
using (SqlCommand cmd = new SqlCommand("SELECT ProductName FROM BulkInput", con))
{
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
DataTable dt = new DataTable();
da.Fill(dt);
myComboBox.DataSource = dt;
myComboBox.DisplayMember = "ProductName";
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Always try to keep the connection string inside the configuration file (app.config or web.config, in your case it will be app.config). Say, if you have the key named as "conn" in the config file, you can fetch the value as below
string strConnect = ConfigurationManager.ConnectionStrings["conn"].ToString();