2010-01-20 81 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 */ 
相关问题