清除TextBox会留下不可见的字符

时间:2018-06-12 18:47:32

标签: c# wpf textbox

我正在开发基于文本的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键,将提交您的查询。完成此过程后,将清除TextBox 如果您再次尝试使用相同或任何其他命令,则不会发生任何事情,直到您在TextBox中删除“不可见”字符为止。
我也试过tUser.ClearUndo()

这个角色是什么,我该如何避免呢?

3 个答案:

答案 0 :(得分:0)

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

tUser.Text = string.Empty;

答案 1 :(得分:0)

我相信它与您的关键事件在文本框被清除后仍然设置文本框的值或类似的事实有关。无论如何,快速修复只是使用tUser.trimStart('')或类似的东西。

答案 2 :(得分:0)

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

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

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