Combobox 使用数据库中的DataTables在启动时填充程序,而不获取System.IndexOutfrange消息

Combobox 使用数据库中的DataTables在启动时填充程序,而不获取System.IndexOutfrange消息,combobox,dataset,datatables,initializecomponent,Combobox,Dataset,Datatables,Initializecomponent,大家好,提前谢谢大家!!谢谢你的帮助 我是一个绝对的编码和编程新手(4-5个月) 我正在使用visual studio 2012并用C编写代码# 我正在制作一个连接到SQLServerManagementStudio中的数据库的windows窗体应用程序 基本上,我有两个组合框,需要在启动时填充来自db的数据 我已经创建了一个方法来填充组合框,程序100%运行 这些框在启动时填充,没有数据丢失,所有行都显示在组合框中,所有内容都完全按照它应该做的和应该在什么时候做 然而 每次运行程序时,我都会收

大家好,提前谢谢大家!!谢谢你的帮助 我是一个绝对的编码和编程新手(4-5个月)

我正在使用visual studio 2012并用C编写代码#

我正在制作一个连接到SQLServerManagementStudio中的数据库的windows窗体应用程序

基本上,我有两个组合框,需要在启动时填充来自db的数据

我已经创建了一个方法来填充组合框,程序100%运行 这些框在启动时填充,没有数据丢失,所有行都显示在组合框中,所有内容都完全按照它应该做的和应该在什么时候做

然而

每次运行程序时,我都会收到5次此消息(因为生成此消息的代码使用了5次)

在实际程序启动并正常运行之前。???(快把我逼疯了!!) 这是我所有的相关代码

下面的代码来自我的实际表单 如您所见,我正在使用update_combobox();在initializeComponent部分中获取
它将在启动时填充

        namespace DB_Program
       {
           public partial class Form1 : Form
           {

                DataClass dc = new DataClass();

                public Form1()
                {
                    Thread t = new Thread(new ThreadStart(SplashScreen));
                    t.Start();
                    Thread.Sleep(5000);
                    InitializeComponent();
                    t.Abort();
                    update_ComboBox();            
                  }
这是我表格中的代码,使之成为可能

     private void update_ComboBox()
    {
        DataSet pList = dc.PListPop();

        cboBoxPList.DataSource = pList.Tables[0];
        cboBoxPList.DisplayMember = "PName";
        cboBoxPList.ValueMember = "PName";

        DataSet devList = dl.DevListPop();

        cboBoxDev.DataSource = devList.Tables[0];
        cboBoxDev.DisplayMember = "LName";
        cboBoxDev.ValueMember = "LName";

    }


         public String getDate(String pName)
        {
            String date = null;
            DataTable dTable = new DataTable();

            try
            {
                conn.Open();
                SqlDataAdapter sda = new SqlDataAdapter("SelPro", conn);
                sda.SelectCommand.CommandType = CommandType.StoredProcedure;
                sda.SelectCommand.Parameters.Add("@PName", SqlDbType.VarChar).Value = pName;
                sda.Fill(dTable);
                date = dTable.Rows[0]["StartDate"].ToString();

            }
            catch (Exception GSD)
            {

                string a = GSD.StackTrace.ToString();
                MessageBox.Show(GSD.ToString());
            }
            finally
            {
                if (conn != null)
                {
                    conn.Close();
                }
            }

            return date;
        }
根据我的消息,这些是生成消息的行,第一条消息与上面的代码直接相关

         date = dTable.Rows[0]["StartDate"].ToString();
         date = dTable.Rows[0]["PlannedEndDate"].ToString();
         FirstName = dTable.Rows[0]["FirstName"].ToString();
         Spec = dTable.Rows[0]["Specialty"].ToString();
         PID = (int) dTable.Rows[0]["PID"];
请有人结束我令人沮丧的噩梦! 我需要程序保持原样并按原样运行,我所要做的只是我需要做的一切,这样程序运行时就不会给我那些消息


再次感谢你们

很好,请忽略这个问题,因为我已经自己解决了

代码中没有错误问题出在属性选项卡设置中 这就产生了它不应该产生的东西

         date = dTable.Rows[0]["StartDate"].ToString();
         date = dTable.Rows[0]["PlannedEndDate"].ToString();
         FirstName = dTable.Rows[0]["FirstName"].ToString();
         Spec = dTable.Rows[0]["Specialty"].ToString();
         PID = (int) dTable.Rows[0]["PID"];