2015-01-16 7 views
-1

Я также добавил элемент управления Button, чтобы иметь также имя LabelName. Когда я нажимаю кнопку, мне нужно записать имя кнопки на ярлыке. Моя первая идея заключалась в том, чтобы использовать события - легко и просто. Вопрос: Есть ли более элегантный способ сделать это? (Меня попросили связать кнопку и ярлык) ...Как связать кнопку и метку

+2

Если действие, которое запускает запись в метке, является нажатием кнопки, тогда у вас нет лучшего выбора, чем событие нажатия кнопки. Возможно, если вы покажете свой фактический код, мы сможем найти «более элегантные способы» для написания этого кода. – Steve

+0

Если вы расширите 'Button' и хотите что-то сделать с ним по щелчку, вам не нужно подписаться на его собственное мероприятие, вы можете просто переопределить метод OnClick. –

+0

Вы хотите, чтобы вы установили свойство .Text связанного с ** внешним ** элемента управления Label? ... и хотите сохранить ссылку на эту метку внутри вашей кнопки? –

ответ

1

Я думаю, что лучший способ сделать это - использовать прослушиватель действий, и лучший способ использовать прослушиватель действий - это построить это в ваш класс, который расширяет управление кнопкой, так что пользователю не нужно делать это самостоятельно. Это будет выглядеть так.

class Button2 : Button 
{ 
    public string LabelName = ""; 
    public Button2() 
    { 
     this.Click += this.SetLabelName; 
    } 
    private void SetLabelName(object sender, EventArgs e) 
    { 
     this.LabelName = "Something?"; 
    } 
//You could also do this instead. 
    protected override void OnClick(EventArgs e) 
     { 
      base.OnClick(e); 
     } 
    } 
+0

Это то, что я думал, что должен делать ... Спасибо –

0

Если вы говорите об изменении Text свойства элемента управления Метка внешний, то просто создать свойство в вашем Баттона держать ссылку на этикетке. Вы можете установить это через IDE, как и любой другой собственности:

Setting the associated Label for the Button

Вот класс Button:

public class MyButton : Button 
{ 

    private Label _Label = null; 

    public Label Label 
    { 
     get { return _Label; } 
     set { _Label = value; } 
    } 

    protected override void OnClick(EventArgs e) 
    { 
     base.OnClick(e); 
     if (this.Label != null) 
     { 
      this.Label.Text = this.Name; 
     } 
    } 

} 

Вот Ярлык после того как я нажал на кнопку:

The Label after clicking the Button

+0

Это не то, что я имел в виду, потому что мне нужно «привязать» к кнопке только текст, но не весь ярлык. –

Смежные вопросы