我的英语不是很好
嗨,我是C#的新事件,我想用2个按钮创建开关,我想调用Resize,但我不能。我想让自己调整大小。
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 :(得分:0)
通过阅读您的代码,我通过“调用调整大小”来收集您的意思是提升事件。你正在做的是正确的...虽然应该注意到默认的事件实现,如果没有订阅者,它将为null ...
事实上,另一个主题可能是取消订阅。因此,建议是复制。
您可以按照以下方式执行此操作:
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
。
修改:System.Web.UI.Control
没有Resize
,也没有Size
或Width
和Height
。但是System.Windows.Controls.Control
有Width
和Height
甚至认为它没有Resize
。