2011-12-25 18 views
0

我不知道它是否被稱爲參數(即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; 
     } 
    } 
+0

如何打開下拉列表時,文本textbos改變?你是用事件手動做還是你有觸發器綁定?如果涉及觸發器,您可以發佈xaml嗎? – 2011-12-25 22:11:06

回答

1

如果有人手動這麼做,想必他們是用按鍵來做到這一點。在這種情況下,請使用KeyDownKeyUp事件來顯示下拉菜單。

+0

我會盡力... – thakyZ 2011-12-25 22:41:58

+0

感謝它的工作! :D – thakyZ 2011-12-25 22:49:07

0

簡單,只需從您的TextChanged事件中刪除代碼。

無論如何,你有基本的想法..現在在KeyPress事件中做下拉邏輯,因爲它只接受字符而不是修飾符。所以它的行爲更接近你的要求。不是說您不能用KeyDown和KeyUp處理相同的問題,但可以使用更多的代碼。

+0

不,我想保留它,但要檢測發件人是什麼。 – thakyZ 2011-12-25 22:41:36

+0

@Thaky無論如何你都有答案。我無法從你的描述中完全理解。正確的方法是在正確的事件中處理你的代碼,這是我認爲的一個按鍵事件。 – nawfal 2011-12-26 07:44:24

1

我在過去所做的是使用一個布爾變量,當我更新我的文本框以編程繞過TextChangedEvent時我設置了該變量。

bool loading; 

.... 

loading =true; 

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

loading = false; 

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

這是一個糟糕的方式去考慮他到處改變文本的地方,他需要編寫兩行額外的代碼。理想的方式是處理關鍵事件。 – nawfal 2011-12-26 07:36:17

相關問題