C# 如何在C中调用Resize事件#

C# 如何在C中调用Resize事件#,c#,events,C#,Events,我正在尝试使用自定义事件创建新按钮。这对我来说是新的。我试着称之为“调整大小”。我想创建一个类似android的“开关” 我正试图像其他现有控件一样执行此操作。我已经做了两天了,但我还是一无所有。我相信你能帮助我:) 这是我的密码: public abstract class SwitchBase : Control { private Button first; private Button second; public SwitchBase()

我正在尝试使用自定义事件创建新按钮。这对我来说是新的。我试着称之为“调整大小”。我想创建一个类似android的“开关”

我正试图像其他现有控件一样执行此操作。我已经做了两天了,但我还是一无所有。我相信你能帮助我:)

这是我的密码:

    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();
    }
}

在另一个按钮中,我通过读取代码来更改开关的大小,我认为“调用调整大小”意味着引发事件。你所做的是正确的。。。虽然应该注意,在默认事件实现中,如果没有订阅者,它将为null

事实上,另一个线程可能会在你背后取消订阅。因此,我的建议是复印一份

您可以按如下方式执行此操作:

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

应该注意的是,上面的代码将调用事件的订阅者,但不会导致cotrol调整大小。如果要更改控件的大小,请执行以下操作:

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


注意:我不知道您使用的是什么
控件
类。特别是,如果它是
System.Windows.Forms.Control
,它已经有了一个
Resize
事件,因此您不需要定义自己的事件。很可能您使用的是一个
控件
类,它甚至没有
大小
宽度
高度


编辑:
System.Web.UI.Control
没有
Resize
,也没有
Size
Width
Height
。但是
System.Windows.Controls.Control
具有
宽度
高度
甚至认为它没有
调整大小

好的,我想学习这个事件,因为我想使ChangeSelectEvent类似于此。@elektronator我对事件有一个解释,可以帮助您处理自定义事件。
this.Width = 400;
this.Height = 200;