, поэтому мне удалось создать свой собственный простой пользовательский элемент управления.По сути, это пользовательская кнопка, содержащая дочерний элемент управления Label.Кнопка работает так, как она должна быть во время выполнения.
Однако во время разработки у меня возникала проблема, когда я вырезал и вставлял эту кнопку (скажем, я хочу переместить ее из Panel1 в Panel2 путем вырезания и-paste).
Сама кнопка сохраняет свои свойства, такие как цвет фона и т. д., но дочерняя метка внутри нее переинициализируется каждый раз, когда мы ее вставляем, поэтому текст и цвет внутри этой метки возвращаются к значению по умолчанию.,Значение текста меток задается свойством «Текст», которое переопределяет свойство «Текст» UserControl, например:
private String _text = "Button";
[Browsable(true), Description("Sets the text displayed on the button"), Category("Display Settings")]
public override String Text {
get => _text;
set {
_text = value;
lb_Text.Text = _text;
}
}
Существует ли способ сохранить свойства дочернего элемента управления во время вырезания и вставки вПредставление конструктора?
Ниже приведен код, сгенерированный для раздела InitializeComponent () в UserControl, который будет вызываться всякий раз, когда он добавляется в форму.За исключением деталей, я признал, что значения текста и цвета по умолчанию там повторно инициализируются, поэтому я не уверен, как мы заменяем их во время вырезания и вставки.
private void InitializeComponent()
{
this.lb_Text = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// lb_Text
//
this.lb_Text.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(127)))), ((int)(((byte)(127)))), ((int)(((byte)(127)))));
this.lb_Text.Dock = System.Windows.Forms.DockStyle.Fill;
this.lb_Text.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);
this.lb_Text.ForeColor = System.Drawing.Color.Black;
this.lb_Text.Location = new System.Drawing.Point(0, 0);
this.lb_Text.Name = "lb_Text";
this.lb_Text.Size = new System.Drawing.Size(200, 50);
this.lb_Text.TabIndex = 1;
this.lb_Text.Text = "Button";
this.lb_Text.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// MomentaryButton
//
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackgroundImage = global::HMIControls.Properties.Resources.Button_Normal;
this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
this.Controls.Add(this.lb_Text);
this.Name = "MomentaryButton";
this.Size = new System.Drawing.Size(200, 50);
this.ResumeLayout(false);
}