0

我是 C# 新手,我正在尝试在用户单击表单的位置放置一个点。我正在使用最大尺寸为 640 x 480 的 300 x 200 表单。使用表单的 AutoScrollMinSize 属性,我设置了这个最大尺寸:

this.AutoScrollMinSize = new Size(640, 480);

我可以在表单上放置点,但是一旦我滚动出可见区域,这些点就会消失。由于我手动创建了滚动区域,因此我正在寻找一种方法来添加滚动事件处理程序,该处理程序将调用 this.Invalidate() 以在发生滚动时重新绘制表单。任何意见是极大的赞赏。

这是我所拥有的:

public Form1()
{
  InitializeComponent();
  this.AutoScrollMinSize = new Size(640, 480);

  vScrollBar vScrollBar1 = new VScrollBar();
  vScrollBar1.Scroll += new ScrollEventHandler(this.vScrollBar1_Scroll);
}

这是我调用事件处理程序的方式:

private void vScrollBar1_Scroll(Object sender, ScrollEventArgs e)
{
   this.Invalidate();
}

我从 Microsoft 文档中获得了这个示例,但是当我垂直滚动时绘图仍然消失,所以我知道表单没有重新绘制。

4

2 回答 2

0

您不需要该 VScrollBar 控件(无论如何您从未将其添加到表单中)。

只需覆盖表单的 OnScroll 方法:

protected override void OnScroll(ScrollEventArgs se) {
  base.OnScroll(se);
  this.Invalidate();
}
于 2013-10-16T12:44:16.333 回答
0

尝试将您的活动放在一个代理中

并使用 http://msdn.microsoft.com/en-us/library/system.windows.forms.splitter.aspx

http://msdn.microsoft.com/en-us/library/system.windows.forms.scrollbar.aspx

如何在 Windows 窗体中设置滚动条

并设置

vScrollBar.visible = true and if it is in pannel or form set AutoScroll = true
于 2013-10-16T12:46:01.510 回答