2010-01-06 86 views
2

我正在使用文本框作为telnet终端的项目。 终端将“ - >”作为文本框中的命令提示符。 是否有办法在达到“ - >”提示后禁用删除或退格?C#文本框删除问题

我不想删除命令提示符。

由于

+0

在KeyDown事件处理程序中设置e.SuppressKeyPress = true。你在处理箭头键吗? – 2010-01-06 21:07:58

+0

我现在不处理箭头键。 – user195678 2010-01-06 21:55:42

回答

2

两个选项:

  1. 使提示( “ - >”),而不是作为文本框的一部分的图像或标记。
  2. 如果它是一个web应用程序,请在javascript中处理textchanged事件,如果它代表删除提示,则取消textchanged。如果它不是一个Web应用程序,在C#中做同样的事情,而不是JS。
4

戴夫是对的。

要做到这一点的最佳方法是在文本框的左侧标注->。 您可以删除文本框的边框,并将它们放在白色(或非白色)框中,使其看起来真实。

这对您来说开发和维护起来要容易得多,而且也会更加用户友好。 (例如,Home键会表现得更加出色)

+1

+1 - 除了主键以外,还要考虑鼠标交互,例如选择所有文本,然后粘贴剪贴板中的某些内容和其他此类操作。 – 2010-01-06 20:43:11

+0

为什么是右边?是不是提示总是出现在左边一行​​的开头? 我们还需要更新标签的位置作为从telnet套接字进入的更多数据? – user195678 2010-01-06 22:00:38

+0

我的意思是左侧;抱歉。您是否有一个包含提示和传入数据的多行文本框? – SLaks 2010-01-06 22:03:05

0

你总是可以确保在删除时,你删除字符的索引是> 1(因为 - >将占据位置0 & 1)

+1

如果有人在提示之前添加字符,这将会出现问题 – wprl 2010-01-06 20:38:53

+1

是的,我想我假设在那里不允许任何字符。最好的选择是制作一个标签。 – taylonr 2010-01-06 20:48:39

0

这是一个天真的例子,但你应该能够从这里弄清楚。您可以在keydown事件中达到顶峰,并在需要时取消它。

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

有这么多的角落案例需要照顾,我几乎不认为这是值得的努力。一些示例:CTRL + A后面跟着DEL,右键单击 - >全选,然后右键单击 - >删除,剪切/粘贴命令等等。该清单可以做得很长... – 2010-01-06 20:50:22