繁体   English   中英

当AllowUserToAddRows = false时,自动滚动DataGridView不起作用

[英]Auto scroll the DataGridView does not work when AllowUserToAddRows = false

我想DataGridView只显示数据(只读),并且用户不能直接通过datagridview输入数据,而是通过DataSourceDataMember输入数据。 为了防止用户输入数据,我做了以下设置:

m_dView.AllowUserToAddRows = false;

为什么设置后,DataGridView自动滚动不起作用?

m_dView.DataSource = ds;
m_dView.DataMember = dm;
m_dView.AutoGenerateColumns = true;
m_dView.MultiSelect = false;
m_dView.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
m_dView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
m_dView.ReadOnly = true;
m_dView.AllowUserToAddRows = false;
m_dView.AllowUserToDeleteRows = false;
m_dView.AllowUserToOrderColumns = false;
m_dView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
m_dView.AllowUserToResizeColumns = false;
m_dView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
m_dView.AllowUserToResizeRows = false;
m_dView.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.DisableResizing;

// auto scroll only worked only when m_dView.AllowUserToAddRows = true;
if (m_dView.Rows.Count > 0) {
    m_dView.CurrentCell = m_dView.Rows[m_dView.Rows.Count - 1].Cells[0];
}

我创建了一个代码示例,如下所示,它可以完美运行。 将datagridview控件拖放到新窗体上,如下所示,并将其命名为m_dView

创建了一个按钮,单击该按钮后,我将运行以下代码示例

using (SqlConnection c = new SqlConnection("Server=localhost;Database=deno;Trusted_Connection=True;"))
            {
                c.Open();

                using (SqlDataAdapter a = new SqlDataAdapter(
                    "SELECT * FROM test", c))
                {
                    // 3
                    // Use DataAdapter to fill DataTable
                    string dm = "TestScroll";
                    DataSet ds = new DataSet();
                    a.Fill(ds, dm);
                    // 4
                    // Render data onto the screen
                    m_dView.AllowUserToAddRows = false;
                    m_dView.DataSource = ds;
                    m_dView.DataMember = dm;
                    m_dView.AutoGenerateColumns = true;
                    m_dView.MultiSelect = false;
                    m_dView.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
                    m_dView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
                    m_dView.ReadOnly = true;
                    m_dView.AllowUserToAddRows = false;
                    m_dView.AllowUserToDeleteRows = false;
                    m_dView.AllowUserToOrderColumns = false;
                    m_dView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
                    m_dView.AllowUserToResizeColumns = false;
                    m_dView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
                    m_dView.AllowUserToResizeRows = false;
                    m_dView.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.DisableResizing;

                }
                m_dView.FirstDisplayedScrollingRowIndex = m_dView.Rows.Count-1;
            }

我已使用DataGridView.FirstDisplayedScrollingRowIndex属性将gridview滚动到最后一行

例如

m_dView.FirstDisplayedScrollingRowIndex = m_dView.Rows.Count-1;

您可以将以下代码复制并粘贴到新项目中并进行测试吗? 可能是真正的罪魁祸首。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM