2017-02-17 154 views
0

我的英語不是很好如何調用Resize事件在C#

嗨,我是在C#中,我想用2按鈕創建開關新的I事件,我想打電話給調整大小,但我可以」噸。我想讓自己調整大小。

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

的大小從閱讀你的代碼,據我瞭解,通過「呼調整大小」你的意思是引發事件。你在做什麼是正確的......雖然應該指出的是,通過缺省事件實現,如果沒有訂戶,它將爲空...

實際上,另一個線程可能會退訂你的背後。因爲這個建議是要複製一份。

你能做到這一點,如下所示:

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事件,因此您將不會定義您自己的。有可能您正在使用的課程甚至沒有SizeWidthHeight

編輯:System.Web.UI.Control沒有ResizeSizeWidthHeight。但System.Windows.Controls.ControlWidthHeight甚至認爲它沒有Resize

+0

好的,我想學習這個事件,因爲我想讓ChangeSelectEvent類似。 –

+0

@elektronator我有[在我的另一個答案]事件的解釋(http://stackoverflow.com/questions/20734477/how-to-change-the-name-of-an-existing-event-handler/20734571 #20734571)可以幫助您處理自定義事件。 – Theraot