【问题标题】:scrolling two panels at same time c# winFormsc# winForms 同时滚动两个面板
【发布时间】:2011-02-02 06:05:11
【问题描述】:

是的,所以我有 2 个面板,它们的宽度和数据宽度相同。顶部面板启用了自动滚动。我希望能够使用顶部面板滚动条滚动两个面板。这意味着底部面板没有滚动条。我该怎么做?

alt text http://members.multimania.co.uk/jeff1524/pics/scrolling.jpg

编辑:我试过panel2.AutoScrollPosition = panel1.AutoScrollPosition; 什么都没有

我也试过了

e.Graphics.DrawRectangle(new Pen(Color.Pink,3), 10, 10, 30, 20);
        e.Graphics.TranslateTransform(panel1.AutoScrollPosition.X, 0);

矩形上没有移动。 我做错了什么?

【问题讨论】:

    标签: c# winforms scroll panel


    【解决方案1】:

    更简单。

    只需将面板放在另一个具有滚动条的面板中(AutoScroll = true)。 我用过这个策略。

    【讨论】:

      【解决方案2】:

      简单易懂。为第一个面板实现 Scroll 事件并使其 Invalidate() 第二个。使用第一个面板的滚动位置在第二个面板的 Paint 事件中绘制文本:

          private void panel1_Scroll(object sender, ScrollEventArgs e) {
              panel2.Invalidate();
          }
      
          private void panel2_Paint(object sender, PaintEventArgs e) {
              Point pos = new Point(panel1.AutoScrollPosition.X, 0);
              TextRenderer.DrawText(e.Graphics, "nobugz waz here", panel2.Font, pos, Color.Black);
              // Draw something
              e.Graphics.TranslateTransform(pos.X, pos.Y);
              e.Graphics.DrawLine(Pens.Black, 0, 0, 100, 100);
          }
      

      【讨论】:

      • hmmmm 你知道另一种技术吗,因为我不会在第二个面板中只存储一个标签。我想存储图形什么的
      • 绘制的图形可以用同样的方式偏移,使用e.Graphics.TranslateTransform()。并且可以设置 panel2 的 AutoScrollPosition。很多选择。
      • hmmm 我尝试在 e.Graphics.TransateTransform() 上查找文档,但并没有真正理解它是什么,或者看到与我正在尝试做的事情的关系。
      猜你喜欢
      • 1970-01-01
      • 2011-03-02
      • 2010-09-30
      • 1970-01-01
      • 2016-10-22
      • 2015-03-14
      • 1970-01-01
      • 1970-01-01
      • 2017-05-04
      相关资源
      最近更新 更多