2016-08-28 82 views
0

我有一個非法位置和不能從這些位置移動的字符列表。我將如何防止在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()); 
} 

但它完全打亂了,去上一個無限循環。即使我停止這樣做,如果您通過使用刪除鍵來更改文本的字符數,它也不起作用。也許我可以用某種方式使用正則表達式? (我不知道,我沒有任何經驗與正則表達式)。

+1

什麼是IllegalPositions?提供示例。位置和字符是否應該永久保留在文本框中,並且用戶在它們之間輸入了字符?提供更多細節。提供您使用的實際代碼和實際輸入。 –

+0

對不起,我覺得這很清楚。我現在無法訪問我的主PC,因此暫時不能添加任何代碼。 IllegalPositions是字符串中的位置列表(由CharPos定義,一個包含表示位置的int的類以及是原始字符的Ch)。他們應該永久保留,是的,用戶應該能夠在前後寫文本,但不會覆蓋或刪除這些職位中的任何字符。 – user2950509

+0

什麼是'console.Text'?我只知道C#中的'Console.Write'或'Console.WriteLine'。你的foreach循環對我來說看起來不錯。它在特定位置移除然後添加角色。我沒有看到問題。我需要更多細節。應用程序MVC,WebForms?你是否使用帶自動回發功能的asp:TextBox? –

回答

0

你可以結合多個文本框(可編輯部分)與TextBlocks(只讀部分)?你只需要兩個造型相匹配

+0

我試過這樣做,但它增加了絕對噸的其他問題...:/ – user2950509

+0

你有什麼問題? –

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); 
+0

RichTextBox在UWP中不存在:/ – user2950509

+0

TextBox怎麼樣?以前的解決方案:[append-dynamic-string](http://stackoverflow.com/questions/32977054/how-can-i-add-run-text-xx-to-textbox-c-or-how-can-i -append-dynamic-string) –

+0

這篇文章實際上並沒有提供一個解決方案,但沒有使用RichEditBox,它在uwp中沒有SelectionProtected:/ – user2950509