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?";
     }
}