C # TextChanged не запускает (не ASP.net ) Настольное приложение

#c# #textbox #desktop-application #textchanged

#c# #текстовое поле #рабочий стол-приложение #текст изменен

Вопрос:

Я новичок в C # и пытался узнать, как использовать измененный текст, чтобы пользователям не приходилось вручную нажимать кнопку. Но я могу заставить свое приложение работать с событием TextChanged. Я создал тестовую программу, чтобы проверить, работает ли она, и да, это действительно так. Вот нерабочий код, с которым мне нужна помощь, если вам нужно больше, пожалуйста, дайте мне знать.

Код в форме:

 private void custFNameTxt_TextChanged(object sender, EventArgs e)
    {
        searchFirstName(custFNameTxt, customers);//search first name make searched list
        Console.Write("working!!!!!!!!!!!!!!!!!!!!!!!"); // for testing
    }
  

Код был добавлен в конструктор, когда я добавил событие:

 // 
        // custFNameTxt
        // 
        this.custFNameTxt.Location = new System.Drawing.Point(98, 45);
        this.custFNameTxt.MaxLength = 12;
        this.custFNameTxt.Name = "custFNameTxt";
        this.custFNameTxt.Size = new System.Drawing.Size(171, 20);
        this.custFNameTxt.TabIndex = 1;
        this.custFNameTxt.TextChanged  = new System.EventHandler(this.custFNameTxt_TextChanged);
  

Я попытался добавить обработчик в форму загрузки (это не заставило его работать):

 private void Form1_Load(object sender, EventArgs e)//when form loads do this
    {
        //set unsername field to be selected on load
        usernameTxt.Focus();
        custFNameTxt.TextChanged  = new EventHandler(custFNameTxt_TextChanged);
    }
  

Вот метод, который он вызывает на всякий случай, если проблема связана с ним, а не с вызовом события:

 private void searchFirstName<T>(Control textBox, List<T> list)//method to search customers by first name
    {
        if (list.GetType() == typeof(List<Customer>))
        {
            searchForThis = (textBox as TextBox).Text.ToUpper().Trim().ToString();
            for (int i = 0; i < customers.Count -1; i  )
            {
                searchThis = customers[i].F_name.ToUpper();

                if(searchThis.Substring(0, searchForThis.Length) == searchForThis)
                {
                    searched.Add(customers[i]);
                }
            }//end for loop
        }//end if type of customer
  

Комментарии:

1. не могли бы вы уточнить, какая часть точно работает, а какая нет? Запуск события или обработка searchFirstName<T> ?

2. Если вы не создали класс T , скорее всего, это те части. Какой тип списка List<T> ?

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

4. Да, событие textchnaged, похоже, не запускается, я действительно видел, что консоль не выводит «работает !!!!!» текст. Итак, почему метод не работает в событии textchnaged?

Ответ №1:

Я слишком быстро обратился за помощью, похоже, у меня есть куча другого необходимого кода при нажатии кнопки, который был необходим в тексте, измененном для правильной работы. Спасибо всем за помощь, я просто не мог понять, в чем проблема, пока не получил совет.

 if (!string.IsNullOrEmpty(custFNameTxt.Text) amp;amp; string.IsNullOrEmpty(custIdTxt.Text) ||
            !string.IsNullOrEmpty(custLNameTxt.Text) amp;amp; !string.IsNullOrEmpty(custFNameTxt.Text) ||
            string.IsNullOrEmpty(custLNameTxt.Text) amp;amp; !string.IsNullOrEmpty(custFNameTxt.Text)) 
        {
            searchFirstName(custFNameTxt, customers);//search first name make searched list
            custSearchList.Clear();
            foreach (Customer custs in searched)
            {
                altRowColor(searched, custSearchList);//iterate throught list alt row color
            }
            altCust = 0;//reset altCust to avoid errors
            if (!string.IsNullOrEmpty(custFNameTxt.Text) amp;amp; !string.IsNullOrEmpty(custLNameTxt.Text))//Narrow down the search
            {
                narrowByLast();//narrow method
                custSearchList.Clear();//clear text
                foreach (Customer custs in searched)
                {
                    altRowColor(searched, custSearchList);//iterate throught list alt row color
                }
                altCust = 0;//reset altCust to avoid errors
            }
        }