C# TextBox.IsFocused属性?
我想更改C# TextBox.IsFocused属性?,c#,wpf,textbox,C#,Wpf,Textbox,我想更改文本框。仅当文本不在焦点位置时才更改文本。例如: public void updateValue() { if (!this.valueTB.IsFocused) this.valueTB.Text = updatedValue.ToString(); } 但问题是,this.valueTB.IsFocused属性仅在实际聚焦时更改,而在聚焦出去时不会更改。IsFocused属性在文本框获得或失去焦点时肯定会更改其值 但是Tex
文本框。仅当文本不在焦点位置时才更改文本。例如:
public void updateValue()
{
if (!this.valueTB.IsFocused)
this.valueTB.Text = updatedValue.ToString();
}
但问题是,this.valueTB.IsFocused
属性仅在实际聚焦时更改,而在聚焦出去时不会更改。IsFocused
属性在文本框获得或失去焦点时肯定会更改其值
但是TextBox也提供了和事件。您可以使用TextBox焦点事件
问题是,IsFocused
事件在获得焦点时只触发一次,然后就不触发了。我认为您希望它持续触发此事件,直到Textbox
获得焦点。为此,您必须在特定的时间间隔内不断检查它是否有焦点。也许您可以获取一个bool值,该值告诉您TB是否有焦点:
bool TBIsFocused = false;
private void valueTB_Enter(object sender, EventArgs e)
{
TBIsFocused = true;
}
private void valueTB_Leave(object sender, EventArgs e)
{
TBIsFocused = false;
}
仅使用属性:
这是updateValue
在您的valueTB.TextChanged
事件处理程序中吗?--这是valueTB.TextChanged事件处理程序中的updateValue吗?-通常,您可以稍微解释一下您想要实现的目标,并为代码添加更多的上下文。方法updateValue()将在循环线程中从我的userControl类中调用,循环线程每500毫秒更新一次int updateValue字段。所以我希望textBox.text在用户忙时不更改
public void updateValue()
{
if((!tb.IsFocused) || (tb.IsFocused == false))
{
tb.Text = "The text was updated when I wasn't focused. Is't OK?";
}
}