Справка по ошибке «объект» не содержит определения «текст» - PullRequest
3 голосов
/ 20 января 2010

Вот проблема:

Это для приложения WPF, использующего C # и LINQ to SQL.

Когда пользователь хочет просмотреть список клиентов, он начинает вводить имя в текстовое поле. Событие textaged использует входной текст для определения предложения where оператора LINQ, который фильтрует список.

В настоящее время у меня есть два таких текстовых поля, которые запускают, по сути, один и тот же код, но я не могу свести этот код к одной функции - я буду использовать списки клиентов во многих местах.

Вот немного кода:

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 или ссылка на сборку ?)

Ответы [ 3 ]

2 голосов
/ 20 января 2010

Вы должны преобразовать переменную "sender" в TextBox:

SearchText =  (sender as TextBox).Text;
0 голосов
/ 28 мая 2012

События помещают отправителя в коробку как объект, и поэтому вы не знаете, как выглядит объект, если вы не приведете его к нужному типу. В данном случае это элемент управления 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 */
0 голосов
/ 20 января 2010

Вам нужно разыграть sender до TextBox:

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

Надеюсь, это поможет

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