我正在制作一個簡單的電子郵件發件人,我想做的是檢查 textbox.text 是否有 14 個字符。如果是 14 - 那么文本變為綠色,如果小于則變為紅色。我在輸入第 14 個字符時遇到了問題。它不會變綠。當我輸入另一個沒有顯示的字符時會發生這種情況,因為我有 MaxLength = 14,但我仍然需要輸入第 15 個字符。此外,當我嘗試洗掉字符時,字串不會隨著第一個洗掉的字符變成紅色,而是在幾個之后。我嘗試過 Regex 和 trim() 之類的東西,認為可能有一些特殊字符,但它似乎不起作用。我還錄制了有關該問題的視頻,以使其更具描述性。
private void trackBox1_KeyPress(object sender, KeyPressEventArgs e)
{
trackBox1.Text = RemoveSpecialCharacters(trackBox1.Text);
trackBox1.Text = trackBox1.Text.Replace("\r\n", "\n");
errorBox.Text = trackBox1.TextLength.ToString();
if (trackBox1.TextLength < 14)
{
trackBox1.ForeColor = Color.Red;
} else if (trackBox1.TextLength == 14)
{
trackBox1.ForeColor = Color.Green;
}
trackBox1.Text.TrimEnd();
}
public static string RemoveSpecialCharacters(string str)
{
return Regex.Replace(str, "[^a-zA-Z0-9_.] ", "", RegexOptions.Compiled);
}
uj5u.com熱心網友回復:
而不是使用trackBox1_Keypressput your if statementintrackBox1_TextChanged事件并計算應該使用的文本長度,trackbox.Text.Length而不是trackbox1.TextLength
這是一個示例片段TextChanged,如果文本長度大于或等于 14,則該事件將顏色從紅色更改為綠色。
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text.Length <= 14)
{
textBox1.ForeColor = Color.Red;
}
else
{
textBox1.ForeColor = Color.Green;
}
}
uj5u.com熱心網友回復:
我不確定是否trackBox1.TextLength是獲得長度的正確方法
trackBox1.Text.Length //try this
//and also your event
private void yourTextBox_TextChanged(object sender, EventArgs e)
{
}
uj5u.com熱心網友回復:
查看 Control.KeyPress檔案...事件在按下鍵后觸發,但在字符實際進入文本框之前觸發。這意味著您正在檢查的長度比您期望的長度小一(除非剛剛按下的鍵是退格鍵,它KeyPress也會捕獲,在這種情況下它比您期望的長度大一)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/480703.html
下一篇:僅使用一種方法更改不同的按鈕文本
