我有以下功能:使用KeyDown事件正確
private void TextBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
TextBox TextBox = (TextBox)sender;
if (TextBox.Text == "Name" ||
TextBox.Text == "E-mail address" ||
TextBox.Text == "Confirm e-mail" ||
TextBox.Text == "Mobile number" ||
TextBox.Text == "Password")
{
TextBox.Foreground = new SolidColorBrush(Colors.Black);
TextBox.Text = e.Key.ToString().ToLower();
TextBox.Select(1, 0);
}
}
我的文本框最初有一個標籤設置爲自己的財產。文本。當用戶點擊文本框時,我希望光標移動到開始位置,然後當他們開始輸入時,標籤消失。
這工作正常,但問題是當我點擊零時,文本框中填充了「D0」。它也不能正確處理外殼,這就是爲什麼我添加了ToLower調用。我只想讓TextBox自行清除,然後正確顯示用戶點擊的內容。其它如何工作不正常的例子是,如果我點擊空格鍵,它會顯示「空格」。
任何想法?
謝謝,但我不能這樣做,因爲當TextBox獲得焦點時,我仍然想顯示標籤。因此,名稱文本框將仍然包含名稱,直到他們開始輸入,這是我需要清除它的時間。爲什麼這種做法很糟糕?它不會讓我困惑,這意味着我的變量仍然是大寫的。 – xceed
這是不好的做法,因爲你可能有很多文本框,這會讓你感到困惑。我用於文本框的標準做法是將「tb」追加到文本框所包含的前面。例如,tbName,tbEmail,tbPhone等......這樣就沒有混淆的餘地,你知道它是什麼類型的控制,它包含了什麼樣的一般類型的數據。 –
@xceed所以我已經添加了一個符合你需求的編輯。 TextBox是一個類的類型,它應該被用作它,否則你會看到在你的代碼中會產生很多混亂。請注意,一個類可以有一個靜態方法/變量,你將訪問MyClass.Variable - 你不需要一個對象。 – Romasz