我正在开发一项功能,允许用户将不同类型的控件添加到面板(图片框、标签、文本框、按钮),而且这些控件应该在面板上“可移动”。为了解决这个问题,我创建了(在其他答案的帮助下)一个从 Label 继承的自定义控件类,“可移动”行为已经实现。我需要帮助来抽象此类中的所有逻辑,以便我可以在其他控件上重用它,而不是为每个控件创建一个类。当前 CustomLabel 类的示例代码
public class CustomLabel : Label
{
private bool m_Moving;
private Cursor m_CurrentCursor;
protected bool IsColliding { get; set;}
private Point InitialPosition { get; set; }
public CustomLabel ()
: base()
{
MouseUp += CustomLabel_MouseUp;
MouseMove += CustomLabel_MouseMove;
}
private void CustomLabel_MouseUp(object sender, MouseEventArgs e)
{
m_Moving = false;
base.Cursor = m_CurrentCursor;
if (this.IsColliding)
{
base.Location = InitialPosition;
}
}
.....
}
我还阅读了有关扩展方法的信息,但无法使其与事件一起使用。