有一个班级NodeButton
,这些NodeButton
是动态创建的,然后添加到Parent Control
Panel
。
在NodeButton
中创建了一个内部TextBox
,它在NodeButton
上正确显示。
问题是我需要在TextBox
内创建另一个NodeButton
,该Button
位于Moved
的右侧。由于TextBox
可以{{ 1}},TextBox
应该像第一个一样移动。现在新的Button
不可见,因为它位于+------+ +-------+
|Button| |TextBox|
+------+ +-------+
public class NodeButton : Button
{
...
public NodeButton()
{
TextBox tb = new TextBox()
{
Name = ...
Location = New Point(2,2);
...
Parent = this;
}
this.Controls.Add(tb);
..
}
..
}
的边框之外。
如果没有为按钮和TextBox创建Wrapper控件,这是可能的,NodeButton类太复杂了。
{{1}}
答案 0 :(得分:2)
this.Controls.Add(tb);
不要将文本框添加到按钮的Controls集合中,将其添加到按钮的Parent。大致是:
tb.Location = new Point(this.Right + 5, this.Top);
this.Parent.Controls.Add(tb);
确保Parent有效,不清楚它是否来自上下文。如果没有,或者您无法确定,那么最好覆盖OnParentChanged。建议使用UserControl。因此,不要将充满控件的面板填满,这往往会使您的UI陷入爬行。