【问题标题】:Prevent special characters in WPF textbox防止 WPF 文本框中的特殊字符
【发布时间】:2019-08-09 13:20:34
【问题描述】:

我从这个链接获得了以下 C# 代码:How to prevent users from typing special characters in textbox

  string allowedchar = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  if (!TXT_NewPassword.Text.All(allowedchar.Contains))
  {
   // Not allowed char detected
  }

以下代码是上述代码的vb.net版本

    Dim allowedchar As String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    If Not TXT_NewPassword.Text.All(allowedchar.Contains) Then
        ' Not allowed char detected
    End If

我该如何解决这个错误? :https://prnt.sc/mzsmkd

错误信息:

重载解析失败,因为没有可访问的“包含”接受 这个参数的数量

【问题讨论】:

标签: c# wpf vb.net


【解决方案1】:

如果您正在寻找 LINQ 解决方案,我会使用:

Dim allowedchar As String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
If Not TXT_NewPassword.Text.All(function(x) allowedchar.contains(x)) Then
    ' Not allowed char detected
End If

String.Contains 需要一个参数,该参数将被搜索。 .All 循环遍历 TXT_NewPassword.Textfunction(x) 中的每个字母,允许您通过 x 访问该字母。

【讨论】:

  • 感谢您的正确回答。但是为什么您认为以下链接的 C# 代码被接受为已解决的答案? stackoverflow.com/questions/33018299/…
  • @Markowitz 老实说,我不确定。我本来希望看到 C# 代码为TXT_NewPassword.Text.All(x=>allowedchar.Contains(x))
  • 答案是它在 C# 中是完全有效的语法。有一个很长但逐步的解释为什么它在这里有效......stackoverflow.com/a/35422304/5198140
  • @Markowitz,翻译成VB应该是If Not TXT_NewPassword.Text.All(AddressOf allowedchar.Contains) Then
  • @Markowitz,我之前的翻译虽然更接近原始 C# 代码,但有错误,应该是 If Not TXT_NewPassword.Text.All(AddressOf DirectCast(allowedchar, IEnumerable(Of Char)).Contains) ThenString.Contains 方法采用 String 参数。我之前的翻译和这个答案中的翻译有效,因为 VB 将 Char 隐式转换为 String 。 C# 不允许这种隐式转换,因此解析为由 String 类型实现的 IEnumerable(Of Char).Contains 方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-06
  • 2021-01-22
  • 1970-01-01
  • 2011-12-18
  • 2015-06-25
  • 1970-01-01
相关资源
最近更新 更多