Windows Develop Bookmark and Share   
 index > Windows Forms General > Form load with mulitple combox fill?????
 

Form load with mulitple combox fill?????

Hi,
In my few form a hav lots of combox and i have to load them in form_load().

But it take time to to execute all the methods so form opens after few sec.

So can any one suggest me what would be best way to handle this situation??

Thanks
Abhishek
abhi0410  Tuesday, September 22, 2009 5:20 AM
Hi,
Sample For You...
i hope it will help you
    public Form1()
        {
            InitializeComponent();
            InitWorker();
        }
        BackgroundWorker backgroundWorker;
        public delegate void AddComboItem();
        public AddComboItem myDelegate;
       
        private void Form1_Load(object sender, EventArgs e)
        {
            backgroundWorker.RunWorkerAsync();
            backgroundWorker.WorkerReportsProgress = true;
            myDelegate = new AddComboItem(LoadCombo); 
            //LoadCombo();
        }
        private void InitWorker()
        {
            backgroundWorker = new BackgroundWorker();
            backgroundWorker.DoWork += new DoWorkEventHandler(backgroundWorker_DoWork);
            backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker_RunWorkerCompleted);
            backgroundWorker.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker_ProgressChanged);
        }

        void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            progressBar1.Value = e.ProgressPercentage;
        }
       

        void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Error != null)
            {
                MessageBox.Show(e.Error.Message);
            }          
            else
            {                
                MessageBox.Show("Successfully Loaded");
            }

        }

        void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;
            e.Result = LoadAllCombo(worker, e);

        }
        private int LoadAllCombo(BackgroundWorker worker, DoWorkEventArgs e)
        {

            worker.ReportProgress(1, "Loading");
            DataSet ds = new DataSet();
            ds = CreateDataSet();
            worker.ReportProgress(20, "Loading");
            comboBox1.Invoke(this.myDelegate);
            worker.ReportProgress(100, "Loaded");
            int result=0;
           
           
              
              
          
            return result;
        }
        
        private void LoadCombo()
        {
            DataSet ds = new DataSet();
            ds = CreateDataSet();                        
            comboBox1.DataSource = ds.Tables[0];
            comboBox1.DisplayMember = "CustName";
            comboBox1.ValueMember = "CustID";

            comboBox2.DataSource = ds.Tables[0];
            comboBox2.DisplayMember = "CustName";
            comboBox2.ValueMember = "CustID";

            comboBox3.DataSource = ds.Tables[0];
            comboBox3.DisplayMember = "CustName";
            comboBox3.ValueMember = "CustID";

            comboBox4.DataSource = ds.Tables[0];
            comboBox4.DisplayMember = "CustName";
            comboBox4.ValueMember = "CustID";
           
        }
        private DataSet CreateDataSet()
        {
            DataTable table = new DataTable("childTable");
            DataColumn column;
            DataRow row;
            DataSet dataset = new DataSet();        
          
            column = new DataColumn();
            column.DataType = System.Type.GetType("System.String");
            column.ColumnName = "CustName";         
            column.Caption = "Name";
            table.Columns.Add(column);
            column = new DataColumn();
            column.DataType = System.Type.GetType("System.Int32");
            column.ColumnName = "CustID";           
            column.Caption = "ID";           
            table.Columns.Add(column);        
          
          
            dataset.Tables.Add(table);

         
            for (int i = 0; i <= 10000; i++)
            {
                row = table.NewRow();               
                row["CustName"] = "Item " + i;
                row["CustID"] = i;
                table.Rows.Add(row);
            }
            return dataset;

        }

Best Regards, C.Gnanadurai ----------------------- Please mark the post as answer if it is helpfull to you
Gnanadurai  Wednesday, September 23, 2009 9:19 AM
Hi,
use background worker to load all combobox asynchronously. i hope it will help you.
Best Regards, C.Gnanadurai ----------------------- Please mark the post as answer if it is helpfull to you
  • Proposed As Answer byPrasant Swain Tuesday, September 22, 2009 5:40 AM
  • Unproposed As Answer byabhi0410 Tuesday, September 22, 2009 6:02 AM
  •  
Gnanadurai  Tuesday, September 22, 2009 5:25 AM
Hi,
Sample For You...
i hope it will help you
    public Form1()
        {
            InitializeComponent();
            InitWorker();
        }
        BackgroundWorker backgroundWorker;
        public delegate void AddComboItem();
        public AddComboItem myDelegate;
       
        private void Form1_Load(object sender, EventArgs e)
        {
            backgroundWorker.RunWorkerAsync();
            backgroundWorker.WorkerReportsProgress = true;
            myDelegate = new AddComboItem(LoadCombo); 
            //LoadCombo();
        }
        private void InitWorker()
        {
            backgroundWorker = new BackgroundWorker();
            backgroundWorker.DoWork += new DoWorkEventHandler(backgroundWorker_DoWork);
            backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker_RunWorkerCompleted);
            backgroundWorker.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker_ProgressChanged);
        }

        void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            progressBar1.Value = e.ProgressPercentage;
        }
       

        void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Error != null)
            {
                MessageBox.Show(e.Error.Message);
            }          
            else
            {                
                MessageBox.Show("Successfully Loaded");
            }

        }

        void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;
            e.Result = LoadAllCombo(worker, e);

        }
        private int LoadAllCombo(BackgroundWorker worker, DoWorkEventArgs e)
        {

            worker.ReportProgress(1, "Loading");
            DataSet ds = new DataSet();
            ds = CreateDataSet();
            worker.ReportProgress(20, "Loading");
            comboBox1.Invoke(this.myDelegate);
            worker.ReportProgress(100, "Loaded");
            int result=0;
           
           
              
              
          
            return result;
        }
        
        private void LoadCombo()
        {
            DataSet ds = new DataSet();
            ds = CreateDataSet();                        
            comboBox1.DataSource = ds.Tables[0];
            comboBox1.DisplayMember = "CustName";
            comboBox1.ValueMember = "CustID";

            comboBox2.DataSource = ds.Tables[0];
            comboBox2.DisplayMember = "CustName";
            comboBox2.ValueMember = "CustID";

            comboBox3.DataSource = ds.Tables[0];
            comboBox3.DisplayMember = "CustName";
            comboBox3.ValueMember = "CustID";

            comboBox4.DataSource = ds.Tables[0];
            comboBox4.DisplayMember = "CustName";
            comboBox4.ValueMember = "CustID";
           
        }
        private DataSet CreateDataSet()
        {
            DataTable table = new DataTable("childTable");
            DataColumn column;
            DataRow row;
            DataSet dataset = new DataSet();        
          
            column = new DataColumn();
            column.DataType = System.Type.GetType("System.String");
            column.ColumnName = "CustName";         
            column.Caption = "Name";
            table.Columns.Add(column);
            column = new DataColumn();
            column.DataType = System.Type.GetType("System.Int32");
            column.ColumnName = "CustID";           
            column.Caption = "ID";           
            table.Columns.Add(column);        
          
          
            dataset.Tables.Add(table);

         
            for (int i = 0; i <= 10000; i++)
            {
                row = table.NewRow();               
                row["CustName"] = "Item " + i;
                row["CustID"] = i;
                table.Rows.Add(row);
            }
            return dataset;

        }

Best Regards, C.Gnanadurai ----------------------- Please mark the post as answer if it is helpfull to you
Gnanadurai  Wednesday, September 23, 2009 9:19 AM

You can use google to search for other answers

Custom Search

More Threads

• datagrid update
• Updating label in "form2" from another class
• How to change mouse pointer with my resources
• I can't figure this "Enter" thing out! Please help.
• Need help for making attractive and professional GUI
• Not understanding the concept of Resetxxxx Property
• Why can't I do this Thread t1 = new Thread(new ThreadStart(sweeper.Traverse(dir)));
• Marshal.PtrToStructure() problem when drag & drop mail items from Outlook Express
• Name Conflicts with existing module,project ........
• Visual Inheritance Problem