Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 清除文本框会留下一个不可见的字符_C#_Wpf_Textbox - Fatal编程技术网

C# 清除文本框会留下一个不可见的字符

C# 清除文本框会留下一个不可见的字符,c#,wpf,textbox,C#,Wpf,Textbox,我正在开发一个基于文本的RPG。如果在文本框(tUser)中键入内容,将调用方法Input(),并处理查询。如果它符合某个条件,则是另一个条件,例如。G退出游戏,就会发生 public void Input() { if (tUser.Text.ToLower() == "ende" || listening) { if (tUser.Text.ToLower() == "ende") { if (MessageBox.Sh

我正在开发一个基于文本的RPG。如果在文本框(
tUser
)中键入内容,将调用方法
Input()
,并处理查询。如果它符合某个条件,则是另一个条件,例如。G退出游戏,就会发生

public void Input()
{
    if (tUser.Text.ToLower() == "ende" || listening)
    {
        if (tUser.Text.ToLower() == "ende")
        {
            if (MessageBox.Show(playername + 
                ", wollt Ihr wirklich das Spiel ohne Speichern verlassen?", "Beenden", 
                MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                Application.Exit();
            }
        }
        else
        {
            input = tUser.Text;

            if (accept == 1 && !input.Any(char.IsDigit))
            {
                tRPG.AppendText("\nBitte gebt nur eine Zahl ein!");
            }
            else
            {     
                listening = false;
            }
        }        
    }

    // Reset
    input = "";
    tUser.Clear();
}
如果按Enter键,将提交您的查询。处理完成后,文本框将被清除。
如果您(再次)尝试相同或任何其他命令,在删除文本框中的“不可见”字符之前,不会发生任何事情。
我还尝试了
tUser.ClearUndo()


这个字符是什么?如何避免它?

为什么不直接将文本设置为空字符串而不是使用clear

tUser.Text = string.Empty;

我相信这与你的关键事件在清除文本框后仍然设置文本框的值或类似的东西有关。无论如何,一个快速的解决方法是只使用tUser.trimStart(“”)或类似的东西。

出于某种原因,文本框保留回车符。将
e.Handled=true
添加到调用
Input()
的方法可以解决此问题

private void tUser_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == (char)Keys.Enter)
    {
        e.Handled = true;
        Input();
    }
}

e.Handled
阻止在此处理程序完成()后处理enter消息。

WPF?Windows窗体?是;标题已更改。奇怪。您是否尝试过
tUser.Text=string.Empty?在第一个
if
条件上设置断点并检查
tUser.Text
的值时,字符看起来像什么(实际值是什么)?