2012-04-17 3 views
0

Я реализовал заглавные буквы после интернационализации. НО, как реализовать его, чтобы пользователь мог набрать BACK и удалить первое слово или символ, потому что он хочет продолжить в нижнем регистре?Как загладить первую букву каждого предложения И дать Пользователю возможность изменить букву ниже?

KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if(EndOfSentence()) 
    { 
     e.KeyChar = Char.ToUpper(e.Keychar); 
    } 
} 
// 
private bool EndOfSentence() 
{ 
    //return true if end of sentence found 
} 

Пример: Если я напишу это предложение. Я не могу вернуться и изменить «я» на «я»! И я не могу изменить «А» на «а», но я хочу! Как закодировать это?

Пример проекта здесь: http://www.filefactory.com/file/3ecbn51bhbrv/n/Capi.zip

Единственное решение я вижу, чтобы сохранить текущий и предыдущий ключ и проверить, если забой или удалить прессовали как:

if (!EndOfSentence()) 
{ 
    previousKeyChar = e.KeyChar; 
    return; 
} 
// 
if(previousKeyChar.Equals('\b')) return; 
else 
e.KeyChar = Char.ToUpper(e.KeyChar); 
// 
// 
// And in the EndOfSentence I Check 
// if the cursor is at the end of the text 
if(textbox1.Text.Length != textbox1.SelectionStart) 
    return false; //allow editing in the middle of the text 

ответ

0

Там могут быть более эффективные способы, но нужно хранить все предложение в коллекции и проверять коллекцию, прежде чем модифицировать ее.

+0

Там могут быть лучшие способы, и я любезно прошу решение таким образом без сбора для проверки. Как это можно решить в MS Office Word или Outlook? – user1338270

0

Или вы можете попробовать изменить функцию EndOfSentence, чтобы возвращать значение true, если вы также находитесь в конце ввода. Таким образом, он должен использовать только символы, введенные в конце ввода, если вы редактируете что-то в середине текста, оно должно оставаться неизменным.

+0

Я пробовал это раньше, но он терпит неудачу, если пользователь пишет предложение и редактирует его. Пример: Это предложение. A | nd, если пользователь вернется к «И», она может изменить «A» на «a». Но это не удается, если она пытается изменить следующие A на a. | – user1338270

+0

@ user1338270 нет «и» в «Это предложение». Можете ли вы попытаться объяснить это снова? – Default

+0

Let | быть курсором. И пусть весь мой предыдущий комментарий будет Test-Case. Возвращает true только для EndOfSentence, если мы находимся в конце ввода. Затем пользователь может изменить A | nd на | nd. Но пользователь не может изменить A | к |. – user1338270