2015-05-09 95 views
0

我想創建形式搜索類似EXCEL,找到並把(行)在列表視圖 這是我的表格: enter image description here我如何創建類似的excel?

和我的代碼:

private int searchIndex = -1; 
    private void button1_Click(object sender, EventArgs e) 
    { 
     button1.Text = "Find Next"; 
     try 
     { 
      for (int i = 0; i < dataGridView1.Rows.Count; i++) 
      { 
       searchIndex = (searchIndex + 1) % dataGridView1.Rows.Count; 
       DataGridViewRow row = dataGridView1.Rows[searchIndex]; 
       if (row.Cells["Product"].Value == null) 
       { 
        continue; 
       } 

       if (row.Cells["Product"].Value.ToString().Trim().StartsWith(textBox1.Text) || row.Cells["Product"].Value.ToString().Trim().Contains(textBox1.Text)) 
       { 
        ListViewItem lvi = new ListViewItem(row.Cells["Product"].Value.ToString()); 
        lvi.SubItems.Add(row.Cells["Product"].Value.ToString()); 
        listView1.Items.Add(lvi); 
        dataGridView1.CurrentCell = row.Cells["Product"]; 
        dataGridView1.FirstDisplayedScrollingRowIndex = dataGridView1.Rows[row.Index].Index; 
        row = dataGridView1.Rows[i]; 
        return; 
       } 
      } 
     } 
     catch { } 
    } 

和textbox1_textchanged:

searchIndex = -1; 
     button1.Text = "Find"; 
     listView1.Clear(); 

我想要搜索結束時,發送消息... 謝謝

回答

1

模仿Find All功能,填充您的ListView將非常類似於Find Next功能。下面是一個例子,如果它是來自Find Next一個單獨的按鈕:

public Form1() 
{ 
    InitializeComponent(); 
    listView1.View = View.Details; 
    listView1.Columns.Add("Column"); 
    listView1.Columns.Add("Row"); 
    listView1.Columns.Add("Value"); 
} 

private void button2_Click(object sender, EventArgs e) 
{ 
    button2.Text = "Find All"; 
    int tempIndex = -1; 
    listView1.Items.Clear(); 

    for (int i = 0; i < dataGridView1.Rows.Count; i++) 
    { 
    tempIndex = (tempIndex + 1) % dataGridView1.Rows.Count; 
    DataGridViewRow row = dataGridView1.Rows[tempIndex]; 

    if (row.Cells["Foo"].Value == null) 
    { 
     continue; 
    } 

    if (row.Cells["Foo"].Value.ToString().Trim().StartsWith(textBox1.Text) || row.Cells["Foo"].Value.ToString().Trim().Contains(textBox1.Text)) 
    { 
     DataGridViewCell cell = row.Cells["Foo"]; 
     ListViewItem lvRow = new ListViewItem(new string[] { cell.ColumnIndex.ToString(), cell.RowIndex.ToString(), cell.Value.ToString() }); 
     listView1.Items.Add(lvRow); 
    } 
    } 

    MessageBox.Show("Search ended."); // Or whatever message you intend to send. 
} 

Example screenshot.

+0

嗨,我的朋友....這不工作!?當按下按鈕== >>顯示消息框 –

+0

此圖片= http://s3.picofile.com/file/8187808984/Untitled1.png –

+0

我可以重現您的屏幕截圖的唯一方法是通過刪除3'listView1.Columns .Add(「列名」);'調用。否則,這個代碼應該可以正常工作,如我編輯到我的答案中的截圖所示。你能確認你已經添加了列嗎? – OhBeWise

相關問題