小编AAS*_*S.N的帖子

C#:将派生类作为一个通用参数传递

我最近开始学习更多关于事件/代理以及类扩展的知识.

我想通过向Windows Form控件中添加一个扩展方法将我学到的东西付诸实践SetDraggable(),后者又使用a MouseDownMouseMove事件来移动控件.

一切正常,除了它只适用于特定控件 - 在我的情况下,a Button.

namespace Form_Extensions
{
    public static class Extensions
    {
        private static System.Windows.Forms.Button StubButton;
        private static Point MouseDownLocation;
        public static void SetDraggable(this System.Windows.Forms.Button b)
        {
            b.MouseDown += b_MouseDown;
            b.MouseMove += b_MouseMove;
            StubButton = b;
        }

        private static void b_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Left)
            {
                MouseDownLocation = e.Location;
            }
        }

        static void b_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Left)
            {
                StubButton.Left …
Run Code Online (Sandbox Code Playgroud)

c# oop winforms

3
推荐指数
1
解决办法
133
查看次数

标签 统计

c# ×1

oop ×1

winforms ×1