当前位置: 首页 > 编程语言 > C#

执行SQL查询时显示进度条Share

时间:2023-04-10 18:07:17 C#

执行SQL查询时显示进度条有效-可能是因为需要线程。我想以编程方式创建一个表单ProgressBarpb=newProgressBar();pb.MarqueeAnimationSpeed=30;pb.Style=ProgressBarStyle.Marquee;pb.Dock=DockStyle.Fill;progressForm.ClientSize=newSize(200,50);progressForm.FormBorderStyle=FormBorderStyle.FixedDialog;progressForm.StartPosition=FormStartPosition.CenterScreen;progressForm.Controls.Add(pb);progressForm.ControlBox=false;progressForm.TopMost=true;progressForm.Show();//在这里做数据处理(所有查询和执行)progressForm.close();我怎样才能修改上面的代码来实现我的既定目标?编辑:顺便说一下,我想在项目的每个数据函数中使用这个进度条形式。例如:fillGrid、runQuery..@Will非常感谢您的回答。我的意思是我如何使用类的函数,例如我的gridFill函数在那个连接类中:classConnectionClass{publicstaticSqlConnectionconnection=newSqlConnection();公共字符串sorgu;公共静态字符串服务器;公共静态字符串用户ID;公共静态字符串目录;公共静态字符串密码;公共静态字符串访问方法;publicDataSetds=newDataSet();表格progressForm=newForm();publicboolOpen(){try{if(connection.State!=ConnectionState.Open){connection.ConnectionString="DataSource="+server+";"+"初始目录="+目录+";"+"用户ID="+userId+";"+"密码="+密码+";"+"连接超时=0";connection.Open();返回真;}else{返回真;}}catch(Exceptionex){MessageBox.Show("系统消息:"+ex.Message,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);返回假;}}publicDataTableDt(字符串查询){DataTabledt=newDataTable();if(Open()){SqlDataAdapterda=newSqlDataAdapter(查询,连接离子);try{//progressForm.Showdialog()这可能吗???da.Fill(dt);//progressForm.close();??}catch(Exceptionex){MessageBox.Show("SistemMesaj?:"+ex.Message,"Hata",MessageBoxButtons.OK,MessageBoxIcon.Error);}}返回dt;}publicboolRun(stringquery,stringhataMsj){FormactiveForm=Form.ActiveForm;query="SETDATEFORMATDMY"+query;SqlCommandsc=newSqlCommand(query,connection);试试{打开();sc.ExecuteNonQuery();返回真;}赶上(异常){返回假;}}publicvoidfillComboBox(stringsorgu,ComboBoxcb,stringtext,stringvalue){DataTabledt=Dt(sorgu);cb.DisplayMember=文本;cb.ValueMember=值;cb.DataSource=dt;如果(cb.Items.Count>0){cb.SelectedIndex=0;}}publicintfillGridView(stringsorgu,DataGridViewdgv){DataTabledtGrvw=Dt(sorgu);dgv.DataSource=dtGrvw;返回1;}}来自另一个表(类)的示例查询ConnectionClasscc=newConnectionClass();查询=“插入到tblPersonel("+"[sqlUserName]"+",[personelNo]"+",[ad]"+",[soyad]"+",[departmanId]"+",[emailadres]"+",[tcKimlikNo],[kangurubu],[dokumaciNo])VALUES"+"('"+tbSqlUserName.Text+"','"+tbPersonelNo.Text+"','"+tbAd.Text+"','"+tbSoyad.Text+"','"+cbDepartman.SelectedValue.ToString()+"','"+tbMail.Text+"','"+tbKimlikno.Text+"','"+tbKangrubu.Text+"','"+tbDokumaciNo.Text+"')";if(cc.Run(query,"插入新人时出现意外错误")){fillGrid();this.Close();}publicvoidfillGrid(){query="select*fromView_PersonelorderbypersonelNodesc";cc.fillGridView(query,gridviewPersonel);}我无法想象如何在bw_DoWork事件中使用它,因为我的函数有参数。(查询,gridview)当我从另一个类调用它时IParameters可以使用...ps:这个方法对我来说工作得很好,但它没有工作。我不明白使用BackgroundWorker类填充DataGrid的问题。表格进度表;publicvoidfunc(){BackgroundWorkerbw=newBackgroundWorker();bw.DoWork+=newDoWorkEventHandler(bw_DoWork);bw.RunWorkerCompleted+=newRunWorkerCompletedEventHandler(bw_RunWorkerCompleted);progressForm=newForm();ProgressBarpb=newProgressBar();pb.MarqueeAnimationSpeed=30;pb.Style=ProgressBarStyle.Marquee;pb.Dock=DockStyle.Fill;progressForm.ClientSize=newSize(200,50);progressForm.FormBorderStyle=FormBorderStyle.FixedDialog;progressForm.StartPosition=FormStartPosition.CenterScreen;progressForm.Controls.Add(pb);progressForm.ControlBox=false;progressForm.TopMost=true;progressForm.Show();字符串queryString="SELECT....";//在这里填写查询字符串varparams=newKeyValuePair(sorgu,queryString);bw.RunWorkerAsync(参数);}voidbw_DoWork(objectsender,DoWorkEventArgse){KeyValuePairparams=e.ArgumentasKeyValuePair;ConnectionClasscc=new连接类();抄送illGrid(params.Value,params.Key);}voidbw_RunWorkerCompleted(objectsender,RunWorkerCompletedEventArgse){progressForm.Close();//}可以向BackgroundWorker发送参数如果需要多个参数,可以发送一个包含所需对象元组的对象。编辑:如果您使用的是3.5,则可以使用KeyValuePair。代码已更新。正如AshBurlaczenko建议的那样,您必须为此目的使用BackgroundWorker。但是,既然你想把它和ProgressBar绑定,我建议你看看CodeProject上的这篇文章:ProgressWorker。它相当易于使用,它会自动为您更新进度条。您所要做的就是记得不时调用ProgressWorker.ReportProgress方法来更新关联的进度条。以上是C#学习教程:执行SQL查询时显示进度条。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

猜你喜欢