【问题标题】:horizontal scrolling similar to that of excel using DataGridView水平滚动类似于使用 DataGridView 的 excel
【发布时间】:2023-04-03 14:08:01
【问题描述】:

DataGridView 可以在交错的庄园中水平滚动(类似于 excel)。

我不需要沿列单元格滚动(连续),而是当滚动到达单元格边界时,网格应该滚动下一个列单元格。

【问题讨论】:

    标签: c# datagridview


    【解决方案1】:

    您可以覆盖 OnScroll 方法并计算下一个偏移量

        protected override void OnScroll(ScrollEventArgs e)
        {
            if (e.ScrollOrientation == ScrollOrientation.HorizontalScroll)
            {
                e.NewValue = GetColumnOffset(e.NewValue);;
            }
            base.OnScroll(e);
        }
    
        private int GetColumnOffset(int offset)
        {
            int start = 0, end = 0;
            foreach (var column in Columns.Cast<DataGridViewColumn>().Where(c=>!c.Frozen))
            {
                end = start + column.Width;
                if (start <= offset && offset < end)
                {
                    break;
                }
                start = end;
            }
            return start == offset ? offset : end;
        }
    

    【讨论】:

      【解决方案2】:

      尝试使用 FirstDisplayedScrollingColumnIndex 属性。应该有帮助。如果设置 FirstDisplayedScrollingColumnIndex 则跳转到指定列索引的开头。

      类似:

      protected override void OnScroll(ScrollEventArgs e) {
          base.OnScroll(e);
          this.FirstDisplayedScrollingColumnIndex = Convert.ToInt32(this.HorizontalScrollBar.Value / this.Width); }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-18
        • 1970-01-01
        • 2015-03-06
        • 1970-01-01
        • 1970-01-01
        • 2011-02-05
        相关资源
        最近更新 更多