c# - 如果隐藏某些行,datagridview 自动滚动?

标签 c# winforms datagridview

我正在对已经安装了一些自动滚动代码的 Datagridview 进行修改。:

            // snap to most recent entry
            if (cnt > 0)
            {
                this.Invoke(new MethodInvoker(delegate()
                {
                    dgvLog.ClearSelection();
                    dgvLog.FirstDisplayedScrollingRowIndex = dgvLog.Rows.Count - 1;

                    dgvLog.Invalidate();
                }));   
             }

但是,此 Datagridview 上有一个复选框列,代表“内部”与“外部”日志条目。

用户要求一种过滤 Datagridview 的方法,以便他们可以查看外部条目或内部条目...或(默认)两者。因此,我为此创建了一组单选按钮。这些按钮只是循环遍历行,检查 bool 值,并将每行设置为 true 或 false。这些看起来运行良好。

但是,当我过滤 Datagridview 以仅显示“内部”条目时,我会得到一个异常:

System.InvalidOperationException:FirstDisplayedScrollingRowIndex 属性无法设置为不可见行。

知道如何在设置 FirstDisplayedScrollingRowIndex 属性时考虑行可见性吗?在我的谷歌搜索中没有找到太多东西。

谢谢!

最佳答案

使用以下内容

int lastRow = dgvLog.Rows.GetLastRow(DataGridViewElementStates.Visible);
if (lastRow >= 0)
    dgvLog.FirstDisplayedScrollingRowIndex = lastRow;

关于c# - 如果隐藏某些行,datagridview 自动滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32610178/

相关文章:

VB.Net Datagridview转数据表

C# Streamreader "The type or namespace name could not be found"错误,但我有 System.IO 命名空间

c# - Entity Framework 延迟加载不适用于其他线程

c# - c#中的PayPal支付简单示例

c# - 使用 foreach 循环连接两个 List<T>

c# - 奇怪的System.Runtime.InteropServices.COMException错误

c# - 如何在 Windows 文本框中将字符串转换为大写?

c# DataGridViewComboBoxColumn selectedValue 分布在整行

c# - 如何在 C# WinFrom 桌面应用程序中存储 MySql 数据库连接字符串

mysql - Vb.Net 使用组合框过滤 Datagridview