how i do create find similar excel?

南楼画角 提交于 2019-12-08 09:03:29

问题


i want create search in form similar EXCEL , find and put (row) in listview this my form :

and my code :

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 { }
    }

and in textbox1_textchanged :

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

I want when search end, send message ... thanks


回答1:


Mimicking the Find All functionality, populating your ListView will be very similar to the Find Next functionality. Here's an example if it were a separate button from 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.
}



来源:https://stackoverflow.com/questions/30136681/how-i-do-create-find-similar-excel

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!