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