我正在编写一个基本用户控件,它将由一堆其他用户控件继承。我需要对所有这些后代控件强制执行某种设计(例如,顶部必须有几个按钮以及一个或两个标签)。
后代用户控件区域的其余部分可以自由放置任何内容。
最初,我认为我可以将一个面板放到 Base UserControl 上,设置 Dock=Fill,然后后代控件的设计者将被迫将所有 UI 添加到该面板中。然后,我可以根据我的内容调整面板大小。
但事实并非如此 - 当您将一个控件(例如 GridView)拖放到后代 UserControl 上时,它会将其添加到后代用户控件的 .Controls 集合中,而不是我添加的面板中。
有没有办法从基本用户控件强制执行某种布局?
简短的答案是“是”...但是,要获得这种行为,请深入研究编写自己的设计器的丑陋世界,您必须将其与每个需要继承内容面板中特殊位置的控件关联起来。
以下链接应该是一个很好的起点,因为它概述了需要完成的操作并提供了示例代码。
http://support.microsoft.com/?id=813808 http://support.microsoft.com/?id=813808
但请注意,这不是一项简单的任务。为了了解如何实现设计器,需要筛选大量代码(30 多个文件)。自从我尝试这个以来已经有大约两年了。
另一方面,您是否考虑过更改设计以使用具有标签和按钮的单个父控件,并使用适当的子控件填充内容区域?也许甚至可以让内容区域的子控件实现特定的接口来保证契约,以便父级可以与它们交互而无需知道特定的类名?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)