我如何在 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;
}

上面的columnindexhScrollBar1.Value是根据下面的公式得到的: