2016-10-19 3 views
0

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

код в виде:

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 
+0

Не могли бы вы уточнить, какая именно часть работает и не работает? Увольнение события или обработка 'searchFirstName '? –

+0

Если вы не создали класс 'T', это, скорее всего, те части. Какой тип списка «Список '? – Hank

+0

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

ответ

0

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

if (!string.IsNullOrEmpty(custFNameTxt.Text) && string.IsNullOrEmpty(custIdTxt.Text) || 
      !string.IsNullOrEmpty(custLNameTxt.Text) && !string.IsNullOrEmpty(custFNameTxt.Text) || 
      string.IsNullOrEmpty(custLNameTxt.Text) && !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) && !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 
      } 
     }