我已经列出了无法从那些位置移动的非法位置和角色。如何防止在TextChanged事件中修改这些内容?我提出的每个解决方案都是非常hacky和不可靠的,或者依赖于KeyDown事件,它不会阻止用户以其他方式删除只读文本(选择文本并删除它,或者只需按退格键。
我想过做这样的事情:
//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());
}
但它完全混乱并继续无限循环。即使我停止这样做,如果您通过使用删除键更改了文本的字符数,它也无法工作。也许我可以用某种方式使用正则表达式? (我不知道,我对正则表达式没有任何经验)。
答案 0 :(得分:0)
您可以将多个TextBox(用于可编辑的部分)与TextBlocks(用于只读部分)组合在一起吗?您只需要使用两者的样式来匹配
答案 1 :(得分:0)
请查看以下链接:
Disabling or making it readonly a part of the values in a Text Box (.net)
rtBox.Select(0, (rtBox.Text = "I am fixed content").Length);
rtBox.SelectionProtected = true;
rtBox.AppendText(Environment.NewLine);