【问题标题】:Adding custom UI behavior to controls via a Component通过组件向控件添加自定义 UI 行为
【发布时间】:2012-04-03 00:54:39
【问题描述】:

在我的项目中,我有几个控件在屏幕上显示一组点。我想为所有这些控件提供“套索选择”功能。为此,我编写了一个名为“Lasso”的类,它负责跟踪鼠标移动、显示套索、在套索关闭时引发事件等。到目前为止一切顺利。但是,为了使用套索,我必须编写如下代码:

public partial class MyControl : UserControl {

    private Lasso lasso;

    public MyControl() {
        InitializeComponent();

        lasso = new Lasso();
        lasso.HookEvents(this);
    }
}

“lasso.HookEvents”方法负责将套索连接到主机控件的鼠标事件。

我想做的是以某种方式让人们在设计时简单地将“套索”组件从工具箱拖到他们的用户控件或窗体上,而不必担心自己编写任何代码;套索应该神奇地“正常工作”。有没有办法做到这一点 ?我尝试从 Component 扩展我的 Lasso 类,但我不知道如何让 Designer 自动生成“lasso.HookEvents(this)”调用。

【问题讨论】:

    标签: c# .net windows-forms-designer custom-component


    【解决方案1】:

    如果可能,只需在 Lasso 对象中捕获鼠标事件。如果这不可能或不起作用:在您的 Lasso 类中,将处理程序添加到 Loaded 事件,并在处理程序中运行 this.HookEvents(this.Parent);

    【讨论】:

    • 不幸的是,我的 Lasso 类扩展了 Component,而不是 Control;因此,它没有“加载”事件。我不想扩展 Control,因为 Lasso 没有自己的 UI;它只是为父级提供 UI 行为。
    猜你喜欢
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 2011-03-12
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多