C# 当用户在datagridview上键入内容时启动搜索

C# 当用户在datagridview上键入内容时启动搜索,c#,winforms,datagridview,C#,Winforms,Datagridview,我们目前的软件是用FoxPro制作的,它有一个非常好的功能:当我们在网格上键入内容时,搜索功能会自动调用 示例:我有一个包含卡车列表的网格。当我单击网格并键入卡车编号时,网格将直接转到网格的卡车记录 我需要在C#中实现它,我如何才能实现它 另外,在某些情况下,网格可以有可编辑的字段。但是,如果它太复杂,我不会在那些可编辑的网格上实现它。您可以在网格上方有一个文本框,其中包含TextChanged事件 ------------------- | TextBox here | implemen

我们目前的软件是用FoxPro制作的,它有一个非常好的功能:当我们在网格上键入内容时,搜索功能会自动调用

示例:我有一个包含卡车列表的网格。当我单击网格并键入卡车编号时,网格将直接转到网格的卡车记录

我需要在C#中实现它,我如何才能实现它


另外,在某些情况下,网格可以有可编辑的字段。但是,如果它太复杂,我不会在那些可编辑的网格上实现它。

您可以在网格上方有一个文本框,其中包含TextChanged事件

-------------------
| TextBox here    | implement TextChanged event handler for the textbox
-------------------

-------------------

  GridView here      update this gridview when text changes


-------------------

protected void TextBox1_TextChanged(object sender, EventArgs) //this could be replaced with KeyUp event handlder
{
     string truckNo = TextBox1.Text;

     var newValues = findTrucksByNo(truckNo);

     truckGridView.DataSource = newValues; //rebind items to refresh grid view
}

您可以在表单代码中尝试以下操作:

TextBox searchBox = new TextBox();
Timer searchTimer = new Timer();
bool keyPressed = true;

public Form1()
{
    InitializeComponent();
    yourDataGridView.KeyUp += new KeyEventHandler(dgv_KeyUp);
    searchTimer.Interval = 5000;
    this.Controls.Add(searchBox);
    searchBox.KeyUp += new KeyEventHandler(searchBox_KeyUp);
    searchTimer.Tick += new EventHandler(timerTick);
    searchTimer.Enabled = true;
}

void searchBox_KeyUp(object sender, KeyEventArgs e)
{
    keyPressed = true;
}

void dgv_KeyUp(object sender, KeyEventArgs e)
{
    searchBox.Show();
    searchBox.Text += e.KeyCode.ToString().ToLowerInvariant();
    searchBox.Location = Cursor.Position;
    searchBox.Focus();
    SendKeys.Send("{Right}");
    searchBox.BringToFront();
    // Do your sorting of your DataGridView here according to your search box
}

void timerTick(object sender, EventArgs e)
{
    keyPressed = !keyPressed;
    if (keyPressed)
    {
        searchBox.Text = "";
        searchBox.Hide();
    }
}

这将为您提供一个弹出的“搜索”文本框,该文本框将在5秒钟后消失。您可以使用框中的文本在
DataGridView

Doh中的数据上执行您认为合适的搜索。。。我意识到我完全错误地理解了你的问题。。。别介意我上面的回答?这就是我得到的。当我进行第一次培训时,每个用户(5或6)都直接在网格中键入搜索内容……我所做的是使用我修改的dgv_KeyUp事件的基础将文本发送到我的实际搜索框(并关注它)。谢谢你的帮助。