Существует класс NodeButton
, и эти NodeButton
создаются динамически, а затем добавляются в Parent Control
, который является Panel
. В NodeButton
внутренний номер TextBox
и отображается верно на NodeButton
. Проблема в том, что мне нужно создать другую внутри TextBox
, которая должна быть расположена с правой стороны от NodeButton
. Поскольку Button
может быть Moved
, TextBox
должен двигаться так же, как и первый. Теперь новый TextBox
не отображается, так как он находится за пределами границ Button
. Возможно ли это без создания Wrapper управления для кнопки и TextBox, класс 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);
..
}
..
}
Это рисует «TextBox» по мере необходимости :), но когда я перетаскиваю «NodeButton», TextBox не перемещается. Должен ли я писать свой собственный код, чтобы переместить его с помощью 'NodeButton' в обработчики движущихся событий? Я не хочу этого делать, потому что мне нужно как минимум 3 текстовых поля и 3 метки вокруг этого 'NodeButton' –
. Вам также необходимо переопределить OnLocationChanged(), чтобы вы могли также перемещать текстовое поле. Произвольное увеличение количества элементов управления делает UserControl явно превосходным. –
Вау, 'OnLocationChanged()' помог. Спасибо! Я буду использовать 'UserControl' как базовый класс :) –