我有一个非法位置和不能从这些位置移动的字符列表。我将如何防止在TextChanged事件中修改这些内容?我提出的每一个解决方案都非常黑客和不可靠,或者依赖于KeyDown事件,它不会阻止用户以其他方式删除只读文本(选择文本并删除它,或者只是按退格键)。c中部分只读文本框#
我想过做这样的:
//CharPos is a class with an int (CharPos.Position) and a char that
//should be at that int's position (CharPos.Ch)
foreach (CharPos p in IllegalPositions)
{
console.Text = console.Text.Remove(p.Position, 1);
console.Text = console.Text.Insert(p.Position, p.Ch.ToString());
}
但它完全打乱了,去上一个无限循环。即使我停止这样做,如果您通过使用删除键来更改文本的字符数,它也不起作用。也许我可以用某种方式使用正则表达式? (我不知道,我没有任何经验与正则表达式)。
什么是IllegalPositions?提供示例。位置和字符是否应该永久保留在文本框中,并且用户在它们之间输入了字符?提供更多细节。提供您使用的实际代码和实际输入。 –
对不起,我觉得这很清楚。我现在无法访问我的主PC,因此暂时不能添加任何代码。 IllegalPositions是字符串中的位置列表(由CharPos定义,一个包含表示位置的int的类以及是原始字符的Ch)。他们应该永久保留,是的,用户应该能够在前后写文本,但不会覆盖或删除这些职位中的任何字符。 – user2950509
什么是'console.Text'?我只知道C#中的'Console.Write'或'Console.WriteLine'。你的foreach循环对我来说看起来不错。它在特定位置移除然后添加角色。我没有看到问题。我需要更多细节。应用程序MVC,WebForms?你是否使用带自动回发功能的asp:TextBox? –