【问题标题】:Can't remove \r and \n in textbox c#无法在文本框 c# 中删除 \r 和 \n
【发布时间】:2016-08-01 10:12:33
【问题描述】:

我在 c# 中使用一个文本框,并使用一个按键事件,当窗口聚焦在该文本框上时,按下 enter 并执行按钮单击操作

我注意到,当我第一次执行“输入”时,事件进展顺利。 当我返回上一页并再次执行相同的操作时。我看到文本框有 \r 和 \n 即使我已经重置了文本框,比如

  textbox.Text = "";
  //OR
  textbox.Clear();

但不知何故,当我调试 \r 和 \n 仍然存在于文本框中。

我是否做错了什么或任何方式来防止这种情况发生?

【问题讨论】:

  • textbox.Clear() 应该完成这项工作 - 您是否正在进行任何其他处理?如果在 textbox.Clear() 之后立即检查调试器中的内容,\r\n 是否仍然存在?
  • "返回上一页"...你能提供更多关于你在这里做什么的信息吗...

标签: c# winforms textbox


【解决方案1】:

您可以在文本框按键事件中使用e.handled = true,这将首先停止将文本添加到文本框中。只是猜测,但你能在textbox.Clear(); 上设置一个断点吗?我认为在你调用 clear 时文本框可能是空的,然后更新?也许将 clear 移至 KeyUp 事件?

【讨论】:

  • 很高兴听到,user2422414。如果您有时间,您可以将此标记为已接受的答案吗?在此先感谢:)
【解决方案2】:

您需要在您的问题中提供更多代码,但我相信正在发生的事情是您将 .Clear() 设置在 Form_Load 中,它只执行一次,然后当您返回表单时第二次它已经被创建(在内存中),所发生的只是你再次显示它。使用调试器确保您的 .Clear() 位于正确的位置并始终被调用。

Form Show 事件执行 Clear() 操作可能适合您的情况。

public Form1()
{
    InitializeComponent();
    Shown += Form1_Shown;
}

private void Form1_Shown(object sender, EventArgs e) 
{
    textbox1.Clear();
} 

【讨论】:

  • “返回上一页”是什么意思?还请使用更多代码更新您的问题,了解您在什么事件中调用的内容。谢谢。
【解决方案3】:

也许可以试试:

textbox.Text.Replace("\r", "");
textbox.Text.Replace("\n", "");

我只是建议另一种方法。从 Windows 10 开始,新的行序列被一种奇怪的非规范方法处理。您可以通过在 Firefox 中打开一些 .txt 文件然后在记事本中来证明这一点。有时换行位置会有很大差异。我最近处理了这个问题,我的方法正是我建议的:删除所有\r 字符和\n 字符(不要将它们视为一个序列),然后用你需要的任何东西替换它们。

【讨论】:

  • 仅代码,但除此之外OP已经尝试使用.Clear()方法但没有成功。
  • 是的,我只是在建议另一种方法。从 Windows 10 开始,新的行序列被一种奇怪的非规范方法处理。您可以通过在 Firefox 中打开一些 .txt 文件然后在记事本中来证明这一点。有时换行位置会有很大差异。我最近处理了这个问题,我的方法正是我提出的:删除所有 \r 字符和 \n 字符(不要将它们视为序列),然后用你需要的任何内容替换它们。
猜你喜欢
  • 2017-01-25
  • 1970-01-01
  • 1970-01-01
  • 2021-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-23
相关资源
最近更新 更多