在 TextBox 中查看输入文本一秒钟,然后更改为 passwordchar
View Input Text for a second in TextBox and change to passwordchar
与这个 Question 相同,但最后一个答案是我想要的。我需要 c# wpf ...我尝试了最后一个答案,但我似乎无法获得时间间隔。有时可以看到按下的键,有时看不到..如何在按键时获得相同的间隔?
private void TextBox_KeyDown(object sender, KeyEventArgs e)
{
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 1);
dispatcherTimer.Start();
}
我试过了
dispatcherTimer.Interval = TimeSpan.FromSeconds(5);
但还是一样...
编辑
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
string str = "";
for(int i = 0; i < txtPass.Text.Length; i++)
str += char.ConvertFromUtf32(8226);
txtPass.Text = str;
txtPass.Select(txtPass.Text.Length, 0);
}
您不需要每次都订阅新的事件处理程序。在构造函数中只做一次
dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += dispatcherTimer_Tick;
dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 1);
在Keydown
事件中,只需重置timer
(不幸的是我们没有任何Reset
方法)
private void TextBox_KeyDown(object sender, KeyEventArgs e)
{
dispatcherTimer.Stop();
dispatcherTimer.Start();
}
随着计时器的计时,Stop
计时器开始工作
void dispatcherTimer_Tick(object sender, EventArgs e)
{
dispatcherTimer.Stop();
//your code
}
与这个 Question 相同,但最后一个答案是我想要的。我需要 c# wpf ...我尝试了最后一个答案,但我似乎无法获得时间间隔。有时可以看到按下的键,有时看不到..如何在按键时获得相同的间隔?
private void TextBox_KeyDown(object sender, KeyEventArgs e)
{
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 1);
dispatcherTimer.Start();
}
我试过了
dispatcherTimer.Interval = TimeSpan.FromSeconds(5);
但还是一样...
编辑
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
string str = "";
for(int i = 0; i < txtPass.Text.Length; i++)
str += char.ConvertFromUtf32(8226);
txtPass.Text = str;
txtPass.Select(txtPass.Text.Length, 0);
}
您不需要每次都订阅新的事件处理程序。在构造函数中只做一次
dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += dispatcherTimer_Tick;
dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 1);
在Keydown
事件中,只需重置timer
(不幸的是我们没有任何Reset
方法)
private void TextBox_KeyDown(object sender, KeyEventArgs e)
{
dispatcherTimer.Stop();
dispatcherTimer.Start();
}
随着计时器的计时,Stop
计时器开始工作
void dispatcherTimer_Tick(object sender, EventArgs e)
{
dispatcherTimer.Stop();
//your code
}