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