2016-12-05 16 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; 
}