2010-01-20 79 views
2

問題出在這裏:幫助錯誤「對象」不包含「文本」的定義「

這是一個使用C#和LINQ to SQL的WPF應用程序。

當用戶想要查看客戶列表時,他/她開始在文本框中輸入名稱。 textchanged事件使用輸入文本來定義過濾列表的LINQ語句的where子句。

我目前有兩個這樣的文本框運行基本相同的代碼,但我不能將這些代碼減少到一個函數 - 我將在更多的地方使用客戶列表。

這裏有點代碼:

private void CustomerListFiller(object sender, TextChangedEventArgs e) 

    { 

     string SearchText; 

     FrameworkElement feSource = e.Source as FrameworkElement; 

     ***SearchText = sender.Text;*** 

     var fillCustList = from c in dbC.Customers 

          where c.CustomerName.StartsWith(SearchText) 

          orderby c.CustomerName 

          select new 

          { 

           c.CustomerID, 

           c.CustomerName 

          }; 

粗體,斜體線的問題。我無法弄清楚如何讓發件人的文本值在StartsWith函數中使用。錯誤消息是:

錯誤1'對象'不包含'文本'的定義,也沒有擴展方法'文本'接受類型'對象'的第一個參數可以找到(你是否缺少using指令集引用)

+2

請將您的文章的標題更改爲比「新手問...」更具描述性的內容 – 2010-01-20 12:19:41

回答

1

你必須在 「發件人」 變量轉換爲文本框:

SearchText = (sender as TextBox).Text; 
+0

謝謝!做到了!和男人,我感到愚蠢! – 2010-01-20 14:46:58

0

你需要轉換senderTextBox

var textBox = sender as TextBox; 
SearchText = textBox.Text; 

希望它可以幫助

+0

這也適用!謝謝你的幫助! – 2010-01-20 14:48:00

0

事件得到盒裝作爲對象發送者,因此你不知道對象是什麼樣子,除非你將它轉換爲正確的類型。在這種情況下,它是一個TextBox控件。我在事件處理程序中的常用模式是:

TextBox tb = sender as TextBox; 
tb.Enabled = false; /* Prevent new triggers while you are processing it (usually) */ 
string searchText = tb.Text; /* or why not, use tb.Text directly */ 
    : 
tb.Enabled = true; /* just prior to exiting the event handler */ 
相關問題