2017-02-17 3 views
0

мой английский не очень хорошокак вызвать изменения размера событие в C#

Привет, Я новое событие я в C#, я хочу создать переключатель с 2 кнопки, и я хочу вызвать изменение размера, но я могу» т. Я хочу изменить размер.

public abstract class SwitchBase : Control 
    { 
    private Button first; 
    private Button second; 


    public SwitchBase() 
    { 
     InitializeMySwitch(); 
    } 

    private void InitializeMySwitch() 
    { 

     Controls.Add(first = new Button()); 
     Controls.Add(second = new Button()); 

     //first 
     first.Text = "first"; 

     //second 
     second.Text = "second"; 
     second.Location = new System.Drawing.Point(first.Location.X + first.Width, first.Location.Y); 

    } 


    public delegate void ChangedEventHandler(object source, EventArgs args); 

    public event ChangedEventHandler Changed; 

    protected virtual void OnSwitchChanged() 
    { 
     if (Changed != null) 
      Changed(this, EventArgs.Empty); 
    } 

    public delegate void ResizeEventHandler(object source, EventArgs args); 

    public event ResizeEventHandler Resize; 

    protected virtual void OnResize() 
    { 
      Resize(this, EventArgs.Empty); 
    } 

} 



public class Switch : SwitchBase 
{ 
    public Switch() 
    { 

    } 

    protected override void OnSwitchChanged() 
    { 
     base.OnSwitchChanged(); 
    } 

    protected override void OnResize() 
    { 
     base.OnResize(); 
    } 
} 

В других кнопках я изменить размер моего переключателя

ответ

0

От чтения коды, я понял, что «вызов Resize» вы имеете в виду, чтобы поднять событие. То, что вы делаете, является правильным ... хотя следует отметить, что при реализации события по умолчанию он будет равен нулю, если нет подписчиков ...

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

Вы можете сделать это следующим образом:

var resize = Resize; 
if (resize != null) 
{ 
    resize(this, EventArgs.Empty) 
} 

Следует отметить, что приведенный выше код будет вызывать абонентов на мероприятие, но не заставит Cotrol изменить. Если то, что вы хотите, чтобы изменить размер элемента управления, то сделайте следующее:

this.Size = new Size(400, 200); 

Или:

this.Width = 400; 
this.Height = 200; 

Примечание: Я не знаю, что Control класс вы с помощью. В частности, если он был System.Windows.Forms.Control, он уже имеет событие Resize, и поэтому вы не будете определять свои собственные. Скорее всего, вы используете класс Control, который даже не имеет Size или Width и Height.

Edit: System.Web.UI.Control не Resize, ни Size или Width и Height. Но System.Windows.Controls.Control имеет Width и Height даже думал, что у него нет Resize.

+0

ОК, я хочу узнать об этом событии, потому что я хочу сделать ChangeSelectEvent что-то вроде этого. –

+0

@elektronator У меня есть объяснение событий в [еще одном моем ответе] (http://stackoverflow.com/questions/20734477/how-to-change-the-name-of-an-existing-event-handler/20734571 # 20734571), которые могут помочь вам с настраиваемыми событиями. – Theraot

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

  • Нет связанных вопросов^_^