0

クラスがありNodeButton、これらNodeButtonは動的に作成されてから追加されParent ControlますPanel。のNodeButton中に が作成され、 のTextBox上に正しく表示されますNodeButton問題は、 の右側に別の を作成する必要があることです。TextBoxNodeButtonButtonできるのでMovedTextBoxも最初のもののように動くはずです。新しいはの境界のTextBox外側にあるため、表示されません。ButtonNodeButton クラスが複雑すぎるため、ボタンと TextBox の Wrapper Control を作成せずにこれを行うことは可能ですか?

+------+ +-------+
|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); 

ボタンの Controls コレクションにテキスト ボックスを追加しないで、ボタンの親に追加します。だいたい:

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

親が有効であることを確認してください。コンテキストからのものである可能性があることは明らかではありません。そうでない場合、または確信が持てない場合は、OnParentChanged をオーバーライドするのが最善です。UserControl を使用することをお勧めします。パネルにコントロールをぎっしり詰め込むこともそうではありません。

于 2013-04-07T08:51:46.520 に答える