在我编写的程序中,我提出了用户控件的功能,所以我决定将其分解为自己的项目/ DLL。控件由两个按钮和一个面板组成。但是,当我使用DLL时,我错过了一个关键的功能 - 我无法再更改面板的AutoScrollPosition
!我的预感是我得到一份副本,而不是当我去设置它时对该属性的引用...所以这里是代码的概念:
// this works when the user control is native to my project
panelContainer.AutoScrollPosition = new Point(0, myVal + 1);
// this doesn't work when the user control is Referenced in my project
FromDLL.panelContainer.AutoScrollPosition = new Point(0, myVal + 1);
我可以更改FromDll.panelContainer
上的其他属性,例如名称,但我无法更改AutoScrollPosition。两者之间的其他属性完全相同(AutoScroll = false
等)。最重要的是,当我在DLL中创建Setter方法时,调用工作:
// Call from project to set DLL's reference to native panel
FromDLL.SetMainPanel(nativePanel);
// Now this works after the call to SetMainPanel
FromDLL.panelContainer.AutoScrollPosition = new Point(0, myVal + 1);
为什么我会获得AutoScrollPosition的副本而不是参考的任何想法?
答案 0 :(得分:-1)
您需要检查控件客户端大小,而不是 System.Windows.Forms.ScrollableControl.AutoScrollMinSize 。此外,请确保您的System.Windows.Forms.ScrollableControl.AutoScroll 为true并将 System.Windows.Forms.ScrollableControl.AutoScrollMargin 与 System.Windows一起考虑在内.Forms.ScrollableControl.AutoScrollOffset 即可。您可能根本不理解这个概念,就像过去的一些成员一样。
这篇文章对事物有简明扼要的解释: http://www.bobpowell.net/understanding_autoscroll.htm[ ^]。
另见: http://msdn.microsoft.com/en-us/library/system.windows.forms.scrollablecontrol.aspx[ ^]。