在数据网格视图中使用键盘输入搜索单词的第一个字母

发布于 2024-11-07 04:36:15 字数 826 浏览 0 评论 0原文

我的问题是如何搜索以键盘给出的字母开头的单词。我使用下面的代码做到了这一点。

现在我想为下一行执行此操作。找到单词后,我想通过单击向下箭头转到下一行。但是当我单击向下箭头时,所选行将转到上一个所选行。

我该如何解决这个问题?

if (Char.IsLetterOrDigit(e.KeyChar))
{
    if (Char.IsLetter(e.KeyChar))
    {
        for (int i = 0; i < (dgvTestHead.Rows.Count); i++)
        {
            if (dgvTestHead.Rows[i].Cells["Test_Head"].Value.ToString()
                .StartsWith(e.KeyChar.ToString(),
                            true,
                            CultureInfo.InvariantCulture))
            {
                dgvTestHead.ClearSelection();
                dgvTestHead.Rows[i].Cells[0].Selected = true;
                dgvTestHead.FirstDisplayedScrollingRowIndex = i;
                dgvTestHead.Refresh();

                return; // stop looping
            }
        }
    }
}

My question is how to search for a word's start with a letter which is given by keyboard. I did this using the code below.

Now I want to do this for the next row. Once I find a word, I want to go to the next row by clicking the down arrow. But when I click the down arrow, the selected row goes to the previous selected row.

How can I solve this?

if (Char.IsLetterOrDigit(e.KeyChar))
{
    if (Char.IsLetter(e.KeyChar))
    {
        for (int i = 0; i < (dgvTestHead.Rows.Count); i++)
        {
            if (dgvTestHead.Rows[i].Cells["Test_Head"].Value.ToString()
                .StartsWith(e.KeyChar.ToString(),
                            true,
                            CultureInfo.InvariantCulture))
            {
                dgvTestHead.ClearSelection();
                dgvTestHead.Rows[i].Cells[0].Selected = true;
                dgvTestHead.FirstDisplayedScrollingRowIndex = i;
                dgvTestHead.Refresh();

                return; // stop looping
            }
        }
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

悲念泪 2024-11-14 04:36:15

我认为发生这种情况是因为 DataGridViewCurrentRow 属性没有改变。
要将 CurrentRow 设置为所选行(它是只读的),请使用:

dgvTestHead.CurrentCell = dgvTestHead.Rows[i].Cells[0];

这对我有用。

I think it happens because the CurrentRow property of the DataGridView doesn't change.
To set the CurrentRow to the selected row (it is read-only), use:

dgvTestHead.CurrentCell = dgvTestHead.Rows[i].Cells[0];

this worked for me.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文