如何动态地在另一个控件旁边显示一个控件?

时间:2013-04-07 07:11:49

标签: c# .net winforms

有一个班级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}}

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陷入爬行。