这似乎是一个非常简单和非常普遍的问题.我能想到的最简单的例子是:
该表单有五个复选框,上面有一个"check all/check none"复选框.当用户选择检查所有复选框时,我切换"孩子"的状态 - 显然我不想触发所有孩子的检查事件,直到我完成设置所有复选框.
我找不到表单范围的暂停控制事件.如果我只是想念它那么简单的回答.除非我缺少一个简单的解决方案,暂停表单控制事件的最佳方法(最佳实践?已接受的解决方案?)是什么?
我们有一个表单,允许用户通过键入文本框来过滤列表.我们需要根据两个字段过滤列表.FundName和CompanyName.当表单加载时,我将初始LINQ to SQL结果放入一个列表中,以便对于每个后续操作(过滤器)都不会命中数据库.这会显着加快速度(从每个过滤器操作大约400毫秒到不到6毫秒,比如键入字符)并减少数据库抖动.
问题是,当我们决定在两个字段上搜索过滤条件时,LINQ to Object查询不起作用.我可以有一个具有多个条件的查询,而不是多个LIKE(或.Contains或.Endswith等方法,这些方法评估为SQL LIKE语句).该查询确实对LINQtoSQL起作用,而不是针对该对象.以下是一些示例代码:
Dim db As New BenchmarkLINQtoSQLDataContext()
Dim fundList = From FundShort In db.FundShorts _
Select FundShort _
Order By FundShort.IRBB
Dim linqFundShortList As New List(Of FundShort)
linqFundShortList = fundList.ToList()
Dim filterText = "aka"
'This works
Dim successQuery = From fs In fundList _
        Where fs.FundName.ToLower.Contains(filterText) _
        Or fs.CompanyName.ToLower.Contains(filterText) _
        Select fs
FundBindingSource.DataSource = successQuery
'This also works 
Dim successQuery2 = From fs In linqFundShortList _
         Where fs.FundName.ToLower.Contains(filterText) _
         Select fs …