如何动态地在另一个控件旁边显示一个控件
本文关键字:控件 显示 一个 何动态 动态 另一个 | 更新日期: 2023-09-27 18:07:45
有一个类NodeButton
,这些NodeButton
是动态创建的,然后添加到Parent Control
中,即Panel
。在NodeButton
中创建了一个内部TextBox
,它在NodeButton
上正确显示。问题是我需要在TextBox
内创建另一个,它应该位于NodeButton
的右侧。由于Button
可以是Moved
, TextBox
应该像第一个一样移动。现在新的TextBox
是不可见的,因为它在Button
的边界之外。如果不为按钮和文本框创建包装器控件,这是可能的吗? NodeButton类太复杂了。
+------+ +-------+
|Button| |TextBox|
+------+ +-------+
public class NodeButton : Button
{
...
public NodeButton()
{
TextBox tb = new TextBox()
{
Name = ...
Location = New Point(2,2);
...
Parent = this;
}
this.Controls.Add(tb);
..
}
..
}
this.Controls.Add(tb);
不要将文本框添加到按钮的Controls集合中,而是将其添加到按钮的Parent集合中。约:
tb.Location = new Point(this.Right + 5, this.Top);
this.Parent.Controls.Add(tb);
确保Parent是有效的,不清楚它是否来自上下文。如果没有,或者你不能确定,那么重写OnParentChanged是最好的。使用UserControl是明智的。所以不要在面板中塞满控件,这会让你的UI变得很缓慢。