0

有一个类NodeButton,这些NodeButton是动态创建的,然后添加到Parent Control其中Panel。在NodeButton里面创建了一个内部TextBox,它正确显示在NodeButton. 问题是我需要在里面创建另一个TextBox,它应该位于NodeButton. Button可以Moved,应该像TextBox第一个一样移动。现在新TextBox的不可见,因为它在Button的边界之外。如果不为按钮和TextBox创建Wrapper Control,这可能吗,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);    

  ..
  }
  ..
}
4

1 回答 1

2
this.Controls.Add(tb); 

不要将文本框添加到按钮的控件集合中,将其添加到按钮的父级中。大致:

tb.Location = new Point(this.Right + 5, this.Top);
this.Parent.Controls.Add(tb);

请确保父母是有效的,不清楚它可能来自上下文。如果不是,或者您不能确定,那么最好覆盖 OnParentChanged。建议使用 UserControl。所以不是塞满了控件的面板,这往往会使你的 UI 变得爬行。

于 2013-04-07T08:51:46.520 回答