【问题标题】:Regex replace textbox.text in secound winform freezes正则表达式替换第二个winform中的textbox.text冻结
【发布时间】:2015-01-23 03:50:27
【问题描述】:

我遇到了一个问题,我有一个打开不同表单的 winform,用于输入数字。
对于每一秒的输入,它必须附加 :
问题是它冻结了程序。

这行得通:

txt.Text = Regex.Replace(txt.Text, @".{2}(?!$)", "$0");

这会导致 winform 冻结:

txt.Text = Regex.Replace(txt.Text, @".{2}(?!$)", "$0:");

是不是我做错了什么?

【问题讨论】:

  • 您能否详细说明“它会冻结程序?”在大多数情况下,这意味着引发了异常。有什么例外?如果它永远被困在无所事事的境地,那就太奇怪了。
  • 我相信您的第一个表单会因为第二个表单而冻结??
  • 没有例外,它只是冻结。为什么第二种形式要让它冻结??
  • 您的输入有多大?我无法理解为什么它会冻结,除非输入足够大以至于重新渲染结果需要时间。
  • 如何触发上面的代码?它是否可能在“TextChanged”事件处理程序(或类似)中?对我来说,“冻结”听起来像是一个递归问题

标签: c# regex winforms


【解决方案1】:

走错路

txt.Text = Regex.Replace(txt.Text, @".{2}(?!$)", "$0:");

正确的方法

TextBox textBox = sender as TextBox;
String txt = textBox.Text;
textBox.text = Regex.Replace(txt, @".{2}(?!$)", "$0:"); 

【讨论】:

    猜你喜欢
    • 2016-11-12
    • 1970-01-01
    • 2018-03-09
    • 2011-06-06
    • 1970-01-01
    • 2016-03-28
    • 1970-01-01
    • 2015-05-21
    • 2021-03-27
    相关资源
    最近更新 更多