【问题标题】:Access Violation Exception on Textbox Autocomplete文本框自动完成访问冲突异常
【发布时间】:2017-02-20 07:35:13
【问题描述】:

在textchanged事件中经常出现Access Violation Exception。

【问题讨论】:

    标签: exception events access-violation textchanged


    【解决方案1】:

    这可能是安全级别问题。试试这个:转到项目属性页面,然后进入安全部分。

    “启用 ClickOnce 安全设置”将被选中。取消选中它

    参考:https://social.msdn.microsoft.com/Forums/windows/en-US/e599b2e2-3cda-43ad-b15f-a69b4fea1a75/dynamic-filling-of-textbox-autocomplete-not-working?forum=winforms

    【讨论】:

      【解决方案2】:

      我也想使用来自同一文本框的用户输入作为过滤器来填充 TextBox AutoCompleteCustomSource,因此我让 TextChanged 事件抓取数据来填充下拉建议列表。

      我尝试了很多不同的方法来填充数据,这些都导致了随机或持续的访问冲突。如果我没记错的话,我想我终于确定了。

      您使用什么方法将项目实际添加到 AutoCompleteCustomSource 似乎并不重要。当你去替换那些项目时,问题就出现了。

      在更改 TheTextbox.AutoCompleteCustomSource 中的任何数据之前,您需要先设置:

      TheTextBox.AutoCompleteSource = AutoCompleteSource.None    
      

      然后您可以使用任何您喜欢的方法来清除和/或重新填充它:

      TheTextBox.AutoCompleteCustomSource.Clear()
      TheTextBox.AutoCompleteCustomSource.AddRange(AutoSuggestItems)
      

      完成后将 AutoCompleteSource 设置回 CustomSource:

      TheTextBox.AutoCompleteSource = AutoCompleteSource.CustomSource
      
      ' prevent that annoying selection of the whole textbox text
      TheTextBox.Select(Me.TheTextBox.Text.Length, 0)
      

      *注意:如果您在更改数据时也设置了 TheTextBox.AutoCompleteMode,就像我原来一样,它会导致稍后访问冲突错误。 (到目前为止)上述方法工作正常。我希望这是我对这个解决方案的最后一次更新:)

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-01
      相关资源
      最近更新 更多