C# 如何检测事件是否由参数发送

C# 如何检测事件是否由参数发送,c#,wpf,.net-4.0,C#,Wpf,.net 4.0,我不知道它是否被称为参数(即textbox1.text=“Hello”) 我有一个控件,其中有一个文本框。它有一个下拉框,在文本更改时打开。但是当我更新文本框中的文本时,该框会下降 我需要一种方法,使它只下降,如果有人手动这样做 TBAddressBar.ABText.Text = getCurrentBrowser().Source.ToString(); 及 如果有人手动操作,他们大概是在用按键来实现。在这种情况下,请使用或事件来显示下拉列表。简单,只需从TextChanged事件中删除代

我不知道它是否被称为参数(即
textbox1.text=“Hello”

我有一个控件,其中有一个文本框。它有一个下拉框,在文本更改时打开。但是当我更新文本框中的文本时,该框会下降

我需要一种方法,使它只下降,如果有人手动这样做

TBAddressBar.ABText.Text = getCurrentBrowser().Source.ToString();


如果有人手动操作,他们大概是在用按键来实现。在这种情况下,请使用或事件来显示下拉列表。

简单,只需从TextChanged事件中删除代码即可


不管怎样,你已经有了基本的想法。。现在在KeyPress事件中执行下拉逻辑,因为它只接受字符而不接受修饰符。因此,它的行为更接近您的需求。并不是说你不能使用KeyDown和keydup来处理相同的问题,你可以,但是更多的代码..

我过去所做的是使用一个布尔变量,当我以编程方式更新我的文本框时,我会设置它来绕过TextChangedEvent

i、 e


在textbos中更改文本时,如何打开下拉列表?您是使用事件手动执行还是使用触发器绑定?如果涉及到触发器,您可以发布xaml吗?不,我想保留它,但可以检测发送者是什么。@Thaky您已经得到了答案。我无法完全理解你的描述。正确的方法是在正确的事件中处理代码,我认为这是一个按键事件。考虑到他在任何地方以编程方式更改文本,他都需要额外编写两行代码,这是一个糟糕的方法。理想的方法是处理按键按下事件。
    public void ABText_TextChanged(object sender, TextChangedEventArgs e)
    {
        if (sender == 1*)
        {
            ABDropDown.Visibility = Visibility.Visible;
        }
        else
        {
            ABDropDown.Visibility = Visibility.Collapsed;
        }
    }
bool loading;

....

loading =true;

TBAddressBar.ABText.Text = getCurrentBrowser().Source.ToString(); 

loading = false;

public void ABText_TextChanged(object sender, TextChangedEventArgs e) 
{ 
    if(loading) return;
    ....
}