Как определить, отправлено ли событие по аргументу - PullRequest
0 голосов
/ 26 декабря 2011

Я не знаю, называется ли это аргументом (т. Е. textbox1.text = "Hello";).

У меня есть элемент управления, и в нем есть текстовое поле. Он имеет раскрывающийся список, который открывается при изменении текста. Но когда я обновляю текст в текстовом поле, это поле опускается вниз.

Мне нужен способ сделать так, чтобы он падал только если кто-то делает это вручную.

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

и

    public void ABText_TextChanged(object sender, TextChangedEventArgs e)
    {
        if (sender == 1*)
        {
            ABDropDown.Visibility = Visibility.Visible;
        }
        else
        {
            ABDropDown.Visibility = Visibility.Collapsed;
        }
    }

Ответы [ 3 ]

1 голос
/ 26 декабря 2011

В прошлом я использовал логическую переменную, которую я устанавливал при программном обновлении своих текстовых полей, чтобы обойти TextChangedEvent.

т.е.

bool loading;

....

loading =true;

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

loading = false;

public void ABText_TextChanged(object sender, TextChangedEventArgs e) 
{ 
    if(loading) return;
    ....
} 
1 голос
/ 26 декабря 2011

Если кто-то делает это вручную, вероятно, они используют для этого нажатия клавиш.В этом случае используйте KeyDown или KeyUp события, чтобы отобразить раскрывающийся список.

0 голосов
/ 26 декабря 2011

Просто, просто удалите код из вашего события TextChanged.

В любом случае, у вас есть основная идея. Теперь сделайте вашу выпадающую логику в событии KeyPress, поскольку она принимает только символы, а не модификаторы.Так что ведет себя ближе к вашему требованию.Не то, что вы не можете обрабатывать то же самое с помощью KeyDown и KeyUp, вы можете, но больше кода ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...