2016-12-05 47 views
0

正在尋找ListView中的項目的應用程序。我已經添加了一個liitle位邏輯,看起來更好。 首先,我添加了List View Columns的邏輯 - 適合內容的列大小。 然後通過ID進行搜索 - 正在工作。 我的問題是如果這兩個事件互相依賴?意思..雖然我試圖搜索它獲得不確定的循環與調整大小,它使「崩潰」。我的代碼依賴的是:使用搜索事件調整事件大小是否獨立? ListView + TextBox c#

//調整

void DeviceListView_Resize(object sender, EventArgs e) 
     { 
      controller.ResizeColumns((ListView)sender); 
     } 

public void ResizeColumns(ListView lv) 
     { 
      foreach (ColumnHeader column in lv.Columns) 
      { 
       column.Width = -2; 
      } 
     } 

//搜索

void SearchBox_TextChanged(object sender, EventArgs e) 
     { 
      controller.Search(); 
     } 

public void Search() 
     { 
      myListView.Items.Clear(); 
      myListView.Items.AddRange(myList.Where(i => string.IsNullOrEmpty(searchBox.Text) || searchBox.Text.Contains("Search") || i.esn.Contains(searchBox.Text)) 
      .Select(c => new ListViewItem (
       new string[] {c.ID, c.Name, (...), c.Smth} 
      )).ToArray()); 
     } 

//搜索框佔位

void SearchBox_TextChanged(object sender, EventArgs e) 
     { 
      controller.Search(); 
     } 

     void TextGotFocus(object sender, EventArgs e) 
     { 
      TextBox tb = (TextBox)sender; 
      if(tb.Text == "Search...") 
      { 
       tb.Text = ""; 
       tb.ForeColor = Color.Black; 
      } 
     } 

     void TextLostFocus(object sender, EventArgs e) 
     { 
      TextBox tb = (TextBox)sender; 
      if(tb.Text == "") 
      { 
       tb.Text = "Search..."; 
       tb.ForeColor = Color.LightGray; 
      } 
     } 

整個應用程序已經有很多代碼行,只是發佈這個。 Btw。我的懷疑是Search方法中包含:myListView.Items.Clear();如果我不清除它它不會做任何事情,但搜索將不會有用法。 在此先感謝!

回答

0

是的,他們是相互獨立的,不知何故 - 我不知道:)如果解決了我的問題,這看起來像:

全局變量:

bool resized = false; 

if (!resized) 
{ 
      foreach (ColumnHeader column in lv.Columns) 
      { 
       column.Width = -2; 
      } 
      resized = true; 
}