C#文本框删除问题

C#文本框删除问题,c#,textbox,C#,Textbox,我正在做一个项目,我使用textbox作为telnet终端。 终端在文本框中有“->”作为命令提示。 有没有办法在到达“->”提示时禁用删除或退格 我不想删除命令提示符 谢谢两个选项: 将提示(“->”)设置为图像或标签,而不是文本框的一部分 如果是web应用程序,请在javascript中处理textchanged事件,如果textchanged表示删除提示,请取消它。如果它不是一个web应用程序,那么用c#而不是JS做同样的事情 戴夫是对的 最好的方法是在文本框的左侧做一个标签,上面写着->

我正在做一个项目,我使用textbox作为telnet终端。 终端在文本框中有“->”作为命令提示。 有没有办法在到达“->”提示时禁用删除或退格

我不想删除命令提示符

谢谢

两个选项:

  • 将提示(“->”)设置为图像或标签,而不是文本框的一部分
  • 如果是web应用程序,请在javascript中处理textchanged事件,如果textchanged表示删除提示,请取消它。如果它不是一个web应用程序,那么用c#而不是JS做同样的事情
  • 戴夫是对的

    最好的方法是在文本框的左侧做一个标签,上面写着
    ->
    。 您可以删除文本框的边框,并将它们都放在白色(或非白色)框中,使其看起来真实


    这将使您更易于开发和维护,并且更加用户友好。(例如,Home键的性能会更好)

    您可以始终确保在删除时,要删除的角色的索引为>1(因为->将占据位置0和1)

    这是一个简单的示例,但您应该能够从这里找到答案。您可以在keydown事件达到峰值,并在需要时取消它

    private void testTextBox_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Back && testTextBox.SelectionStart == 2)
        {
            e.SuppressKeyPress = true;
        }
    }
    

    如果有人在promptrue之前添加字符,这将有问题,我想我假设那里不允许有字符。最好的选择是制作一个标签。+ 1 -除了home键之外,还考虑鼠标交互,比如选择所有文本,然后粘贴在剪贴板和其他类似的东西中。为什么是右侧?提示不总是出现在左边的一行的开头吗?我们还需要更新标签的位置,因为更多的数据来自telnet套接字?我指的是左侧;很抱歉你有一个包含提示和输入数据的多行文本框吗?这里有太多的角落案例需要处理,我几乎不认为值得这样做。一些示例:CTRL+A,后跟DEL,右键单击->全选,然后右键单击->删除,剪切/粘贴命令,等等。列表可以很长…在KeyDown事件处理程序中设置e.SuppressKeyPress=true。你在处理箭头键吗?我现在不处理箭头键。