我正在开发一个基于文本的RPG。如果在textbox (tUser)中键入某些内容,则调用Input()方法并处理查询。如果它符合一定的条件,其他的事情,例如退出比赛,将发生。
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()。
这个角色是什么,我如何避免它?
发布于 2018-06-14 11:00:16
由于某些原因,文本框保留一个回车。将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消息(来源)。
发布于 2018-06-12 19:30:56
为什么不直接将文本设置为空字符串而不是使用clear呢?
tUser.Text = string.Empty;发布于 2018-06-12 21:53:51
嗯,我相信这与这样一个事实有关:您的关键事件仍然设置文本框的值,或者在清除文本框之后设置类似的值。无论如何,一个快速的解决方法就是只使用tUser.trimStart(‘')或类似的东西。
https://stackoverflow.com/questions/50823885
复制相似问题