我如何在 c# 的面板滚动条中使用 datagridview 滚动条功能?
How can i use datagridview scrollbar functionality in panel scrollbar in c#?
在我的 WinForm 项目中,我有面板控件,它有 DataGridview 子项。 Datagridview 有 50 列,这需要滚动。但我不想使用 Datagridview 滚动条。我想使用面板滚动条。
但是这两个滚动条有不同的功能。 Datagridview 滚动条比面板滚动条有更多的功能。
例如,
1)使用DatagirdView滚动条可以轻松冻结列。
2)同样在datagridview中输入数据时,使用TAB键,滚动条会自动移动。
是否有任何解决方案可以将 Datagridview 滚动条功能添加到面板滚动条。
或者如何将以上2个功能添加到面板滚动条。
提前致谢。
面板滚动条只能用来控制整个datagridview的位置
这是使用外部滚动条滚动 datagridview 的解决方法。
首先,需要在窗体中添加一个HScrollBar,并设置其属性如下。
hScrollBar1.Maximum = dataGridView1.Columns[0].Width * dataGridView1.ColumnCount + dataGridView1.RowHeadersWidth;
hScrollBar1.Value = 0;
hScrollBar1.Location = new Point(panel1.Location.X, panel1.Location.Y + panel1.Height);
并订阅Scroll
事件
hScrollBar1.Scroll += hScrollBar_Scroll;
private void hScrollBar_Scroll(object sender, ScrollEventArgs e)
{
int rowindex = dataGridView1.CurrentCell.RowIndex;
int columnindex = (hScrollBar1.Value - dataGridView1.RowHeadersWidth) / dataGridView1.Columns[0].Width;
this.dataGridView1.CurrentCell = this.dataGridView1[columnindex, rowindex];
}
如果要根据选中的单元格改变滚动条值,订阅DataGridView.SelectionChanged
事件。
dataGridView1.SelectionChanged += dataGridView_SelectionChanged;
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
hScrollBar1.Value = (dataGridView1.CurrentCell.ColumnIndex + 1) * dataGridView1.Columns[0].Width + dataGridView1.RowHeadersWidth;
}
上面的columnindex
和hScrollBar1.Value
是根据下面的公式得到的:
在我的 WinForm 项目中,我有面板控件,它有 DataGridview 子项。 Datagridview 有 50 列,这需要滚动。但我不想使用 Datagridview 滚动条。我想使用面板滚动条。 但是这两个滚动条有不同的功能。 Datagridview 滚动条比面板滚动条有更多的功能。
例如,
1)使用DatagirdView滚动条可以轻松冻结列。
2)同样在datagridview中输入数据时,使用TAB键,滚动条会自动移动。
是否有任何解决方案可以将 Datagridview 滚动条功能添加到面板滚动条。
或者如何将以上2个功能添加到面板滚动条。
提前致谢。
面板滚动条只能用来控制整个datagridview的位置
这是使用外部滚动条滚动 datagridview 的解决方法。
首先,需要在窗体中添加一个HScrollBar,并设置其属性如下。
hScrollBar1.Maximum = dataGridView1.Columns[0].Width * dataGridView1.ColumnCount + dataGridView1.RowHeadersWidth;
hScrollBar1.Value = 0;
hScrollBar1.Location = new Point(panel1.Location.X, panel1.Location.Y + panel1.Height);
并订阅Scroll
事件
hScrollBar1.Scroll += hScrollBar_Scroll;
private void hScrollBar_Scroll(object sender, ScrollEventArgs e)
{
int rowindex = dataGridView1.CurrentCell.RowIndex;
int columnindex = (hScrollBar1.Value - dataGridView1.RowHeadersWidth) / dataGridView1.Columns[0].Width;
this.dataGridView1.CurrentCell = this.dataGridView1[columnindex, rowindex];
}
如果要根据选中的单元格改变滚动条值,订阅DataGridView.SelectionChanged
事件。
dataGridView1.SelectionChanged += dataGridView_SelectionChanged;
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
hScrollBar1.Value = (dataGridView1.CurrentCell.ColumnIndex + 1) * dataGridView1.Columns[0].Width + dataGridView1.RowHeadersWidth;
}
上面的columnindex
和hScrollBar1.Value
是根据下面的公式得到的: