[英]Auto scroll the DataGridView does not work when AllowUserToAddRows = false
我想DataGridView只显示数据(只读),并且用户不能直接通过datagridview输入数据,而是通过DataSource和DataMember输入数据。 为了防止用户输入数据,我做了以下设置:
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.