我想要一个文本框,其中的内容是:
"3 minutes"
但当这个人在上面写字时,消失了几分钟,当失去了焦点时,再次出现单词分钟。
我在WPF中开发
答案 0 :(得分:1)
非常剪裁和干燥的方法,让您开始做出更好的事情。如果没有任何方法可以从文本框中失去焦点(即它是窗口上唯一的控件),这根本不起作用。
private void textBox1_GotFocus(object sender, RoutedEventArgs e) {
textBox1.Text = textBox1.Text.Replace(" minutes", "");
}
private void textBox1_LostFocus(object sender, RoutedEventArgs e) {
textBox1.Text = textBox1.Text + " minutes";
}
答案 1 :(得分:0)
我会在javascript中执行此操作,例如this。
我认为没有服务器端的“Focus”事件,而且我一直认为处理模糊(TextChanged)事件服务器端是坏事。当光标离开某个字段时,我不希望发布表单。
答案 2 :(得分:0)
我假设您要从文本框unit
中移除OnFocus
并在焦点丢失时附加它,
private void textBox1_LostFocus(object sender, RoutedEventArgs e)
{
TextBox textbox;
if ((textbox = sender as TextBox) != null)
{
// Append the unit if any, otherwise the text remains unchanged
if(textbox.Tag != null)
{
var unit = textbox.Tag.ToString();
if(string.IsNullOrEmpty(unit) == false)
{
textbox.Text = string.Format(CultureInfo.CurrentCulture, "{0} {1}", textbox.Text, unit);
}
}
}
}
private void textBox1_GotFocus(object sender, RoutedEventArgs e)
{
TextBox textbox;
if((textbox = sender as TextBox) != null)
{
// Note that this assumes values of the type '[value] [units]' (single space delimiter)
var valueAndUnit = textbox.Text.Split(' ');
// If there is a unit then store it to the Tag property
if(valueAndUnit.Length > 1)
{
textbox.Tag = valueAndUnit[1];
}
textbox.Text = valueAndUnit[0];
}
}
另外,在用户输入值时,请查看textbox Validation和TextChanged event以查看文本(例如,当值为整数时,仅允许输入数字)。