n4p*_*mer 10 c# controls winforms
我发现子控制不是在父母的界限之外绘制的.因此,如果我有一个从面板右侧伸出的按钮,它会被拉到面板结束部分的一半.
2个问题:
public Form1()
{
Size = new Size(800, 600);
Button b1 = new Button();
b1.Text = "hello world";
b1.SetBounds(0,0,256,128);
Controls.Add(b1);
Button b2 = new Button();
b2.Text = "abcdefghijklmnopqrstuvwxyz";
b2.SetBounds(192,32,128,64);
b1.Controls.Add(b2);
}
Run Code Online (Sandbox Code Playgroud)
编辑:
它是关于控件内部控件而不是控件内部表单.
不,没有花哨的用户界面.我知道我可以使用区域来创建疯狂的桌面应用程序.那不是我想要的.
谢谢!
AForm
也是一个控件,因此它的行为与其他控件非常相似。
渲染限制来自这样一个事实,即控件是操作系统中的窗口,它仅表示显示的矩形区域。一个窗口不能在它自己的边界之外绘制任何东西,所以如果一个子控件被放置在这些边界之外,它就不会被渲染(或者只是部分渲染,取决于它的位置)。
没有简单的方法可以解决这个问题,子控件的整个概念都围绕着父控件来控制绘制的内容。如果您想在其父级边界之外绘制子控件,请从父级中删除“子级”,因为这种关系并不真正适用。
您可以想出一些可以解决此问题的自定义呈现代码,但这样控件就不会是其他容器的真正子项,您必须编写大量呈现代码才能使其正常工作。在某些情况下,这可能是所需的行为,但在大多数情况下,默认系统行为更好(并且意味着程序员的工作更少)。
您可以通过自定义呈现表单(即,将其绘制得比实际小),然后在空白区域呈现按钮,从而获得按钮在表单“外部”的视觉效果。但是,这需要大量工作,我不确定您是否愿意走这条路。
如果您正在尝试制作一个奇特的 UI,其中某些控件的形状像 blob(不像矩形)或它们看起来是浮动的(与“主”UI 分离),类似于某些媒体播放器等:这些程序可以整个自定义渲染的东西;它们的窗口仍然是矩形窗口,但在渲染过程中它们使用透明图像和区域来渲染表单。
如果您在问题中添加了更多关于为什么要这样做的详细信息,这会有所帮助。