我的程序是不是将项目添加到列表框并冻结
即时尝试添加一个非常大量的项目列表框,我需要它是我用来添加选定的项目到itextsharp表报告即时通讯使用过滤器在表格中,为了显示处理客户的销售人员或发生事件的日期(或问题与产品一起报告),我的过滤系统如下所示,我有4个类别,即4个列表框客户名称,客户代码(名为listBox1中我没怎么改变它尚未)品种名称,错误类型我的过滤器设置在searchBtn_Click事件我的过滤器和项目添加代码如下下:我的程序是不是将项目添加到列表框并冻结
Private Sub searchBtn_Click(sender As Object, e As EventArgs) Handles searchBtn.Click
For Each obj As contactObject In custList
For Each item As speciesObject In speciesList
'loadLists()
If Trim(fromDate.Value) < Trim(obj.eventDate) Then
If Trim(toDate.Value) > Trim(obj.eventDate) Then
If Trim(fromDate.Value) < Trim(item.compDate) Then
If Trim(toDate.Value) > Trim(item.compDate) Then
End If
If Not customerListBox.Items.Contains(obj.customerName) Then
customerListBox.Items.Add(obj.customerName)
End If
If Not ListBox1.Items.Contains(obj.customer) Then
ListBox1.Items.Add(obj.customer)
End If
If Not speciesListBox.Items.Contains(item.name) Then
If ListBox1.Items.Contains(item.customerCode) Then
speciesListBox.Items.Add(Trim(item.name).ToUpper)
End If
End If
If Not errorListBox.Items.Contains(obj.issue + " - " + obj.issueDescription) Then
errorListBox.Items.Add(Trim(obj.issue + " - " + obj.issueDescription).ToUpper)
End If
End If
End If
End If
Next
Next
countErrors()
End Sub
然后我有查询其设置为从数据库中获取系统中的客户信息
Dim SqlText As String = "SELECT DISTINCT QEE.[EventID] ,QEE.[EventDate] ,QEE.[Employee] ,QEE.[Communication] ,QEE.[OtherCommunication] ,QEE.[Issue] ,QEE.[IssueDescription] ,QEE.[IssueComments] ,QEE.[Resolution] ,QEE.[ResolutionComments] ,QEE.[SalesOrderNumber] ,QEE.[CustomerPO] ,QEE.[SOStatus] ,QEE.[Customer] ,QEE.[CustomerName] ,QEE.[SalesPersonName] ,QEE.[IsResolved] ,QEE.[IssueValue] ,QEE.[DateAndTimeAdded] ,DATEDIFF(day, SOR.ReqShipDate, QEE.[EventDate]) AS Elapsed, SOR.ReqShipDate FROM [QualityTracking].[dbo].[tblQualityEventEntry] QEE INNER JOIN SysproCompanyC.dbo.SorMaster SOR ON QEE.SalesOrderNumber = SOR.SalesOrder COLLATE Latin1_General_CI_AS ORDER BY EventDate ASC, CustomerName ASC, SalesOrderNumber ASC;"
我可能不适合在这里
所有的代码,如果你还只是一般的东西来帮助和我新到vb.net但其他信息的东西,我已经尝试: * listbox.startUpdate/endUpdate *改变查询 *改变排序的属性(现在它的设置为false) *问题发生时,我选择全选然后打搜索数据库是持有一个大约2Mil项目,我需要能够得到它移动,一旦我得到它的工作停止冻结我将能够提高速度,我只是无法弄清楚完全问题是我知道查询可能会更好(如果你有任何建议,请随时我学习) *但我也看到很多人有这个问题与listbox作为有点上市项目的分解方式 *我已经尝试研究它,人们说过使用别的东西我无法为列表框提交
由于要添加的记录太多,您的程序可能没有响应,并且每次将项添加到ListBox.Items集合中时,UI都会刷新。
您可以选择SuspendLayout,同时将行添加到Listbox和ResumeLayout之后。
Private Sub searchBtn_Click(ByVal sender As Object, ByVal e As EventArgs)
customerListBox.SuspendLayout();
// Place your code to populate the ListBox control here...
customerListBox.ResumeLayout();
End sub
这将避免很多刷新,从存在的,而由一个增加的项目之一,并允许应用程序,以减轻项目的添加,那么你恢复的布局,使其刷新控件来显示足够的信息,以屏幕。
OR
您可以使用与List.ToArray()沿ListBox.Items.AddRange()方法。
Private Sub searchBtn_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim custList As List(Of ConstactObject) = loadYourCustomers();
customerListBox.Items.AddRange(custList.ToArray());
Dim speciesList As List(Of SpeciesObject) = loadYourSpecies();
speciesListBox.Items.AddRange(speciesList.ToArray());
End sub
否则后果自负
我建议使用DataGridView及其DataSource属性设置为你的对象的列表。
所以,才能有正确的数据,你必须:
- 删除您Form
- 重命名这两个
DataGridView
一个有意义的名称的两个DataGridView
(如custListDataGridView
,speciesListDataGridview
) - 将两个BindingSource对您的
Form
- 将
BindingSource
重命名为一个有意义的名称(例如,custListBindingSource
,speciesListBindingSource
) - 在设计中,设置
DataGridView.DataSource
属性为你们各自BindingSource
(如custListDataGridview.DataSource = custListBindingsource
,speciesListDataGridView.DataSource = speciesListBindingSource
) -
在底层代码,也就是,在你
searchBtn.Click
事件,您可以设置两个你的绑定源DataSource
财产Private Sub searchBtn_Click(ByVal sender As Object, ByVal e As EventArgs) Dim custList As IList(Of ContactObject) = loadYourContactObjects(); custListBindingSource.DataSource = custList; Dim speciesList As IList(Of SpeciesObject) = loadYourSpeciesObject(); speciesListBindingSource.DataSource = speciesList; End Sub
而且您的信息数据应自动列出,而不必手动添加每条记录。
截至目前,您的*“非常大量的项目”*正在提高*“非常大量的消息”*。收集项目,然后通过设置一个新的'DataSource'或使用'Items.AddRange'来更新每个视图。 – 2014-09-02 16:16:51
答案是否以任何方式帮助你? – 2014-09-12 14:30:57
不,它没有,但我确实解决了我自己的问题,暂停布局不起作用或没有工作或做任何事,我看到我甚至跨过了,它没有 – user3669451 2014-09-16 15:18:03