我試圖阻止某些字符被大寫,而所有其它的必須是。轉換一個字符串的所有字符爲大寫,除了一些特定字符
因爲如果我寫在文本框中東西的例子,它會自動寫到大寫的所有字符,但每次我輸入字母「K」它必須是小寫。
是否有任何人知道實現這一目標的一種方式?
private void textBox3_TextChanged(object sender, EventArgs e)
{
// Navn/Name Text Box
}
我試圖阻止某些字符被大寫,而所有其它的必須是。轉換一個字符串的所有字符爲大寫,除了一些特定字符
因爲如果我寫在文本框中東西的例子,它會自動寫到大寫的所有字符,但每次我輸入字母「K」它必須是小寫。
是否有任何人知道實現這一目標的一種方式?
private void textBox3_TextChanged(object sender, EventArgs e)
{
// Navn/Name Text Box
}
在你textBox3_TextChanged
事件處理程序,你可以簡單地「正確」的文本,將其設置回。
你必須記住的光標位置(和選擇),而敲擊鍵盤,因此用戶不會被打斷:
private void textBox3_TextChanged(object sender, EventArgs e)
{
int start = textBox3.SelectionStart;
int length = textBox3.SelectionLength;
textBox3.Text = textBox3.Text.ToUpper().Replace("K", "k");
textBox3.SelectionStart = start;
textBox3.SelectionLength = length;
}
注:這是Windows.Forms的。我猜想對於wpf或asp或其他ui框架,光標處理的部分將有所不同。
這裏一個方法
private void textBox3_TextChanged(object sender, EventArgs e)
{
textBox3.Text = new string(textBox3.Text.Select(x => x == 'k' || x == 'K' ? 'k' : char.ToUpper(x)).ToArray());
}
如果你不想讓用戶輸入無效的輸入,就可以使用TextChanged事件(其他答案)或處理的KeyDown和KeyUp事件。檢查此鏈接的其他方法。
https://msdn.microsoft.com/en-us/library/ms171537(v=vs.110).aspx
不,您**不要**使用KeyDown和KeyUp事件進行輸入驗證。人們可以用鼠標來改變文本(拖動它,或通過上下文菜單剪切或粘貼),還有其他方法可以修改控件的內容,而不是通過鍵盤或鼠標。 – CodeCaster
最後,您保存新的字符串,插入符返回到其位置。
private static bool CalculateConditionForLowerCase(string stringLetter)
{
return stringLetter.ToLower() == "k";
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(textBox1.Text))
{
return;
}
var caretPosition = textBox1.SelectionStart;
var sb = new StringBuilder();
foreach (var letter in textBox1.Text)
{
var stringLetter = letter.ToString();
sb.Append(CalculateConditionForLowerCase(stringLetter) ? stringLetter.ToLower() : stringLetter.ToUpper());
}
textBox1.Text = sb.ToString();
textBox1.SelectionStart = caretPosition;
}
我建議下一次添加一個「的WinForms」標籤的問題,讓人們可以知道容易,如果如果是WPF中,的WinForms,ASP.NET,Silverlight的,等等 – bradbury9
其實,我覺得更重要的部分是修改字符串,而不是將結果寫入文本框。所以我不會考慮'winforms'標籤... – wkl
@wkl這就是爲什麼我會說這個問題太廣泛了。它提出了兩個問題。第一個是_「如何選擇性地更改字符串中的字符外框?」_,另一個是「我在用戶輸入時如何在WinForms文本框中更改文本?」_。我也很確定這兩個問題都是單獨提出的。 – CodeCaster