如何在进度微调器上执行单击事件

本文关键字:执行 单击 事件 | 更新日期: 2023-09-27 18:35:01

我希望进度微调器像按钮一样工作。我在进度微调器上添加了一个click事件处理程序,但是当我单击微调器的 gif 图像时,它没有执行单击事件。我使用以下代码:

![查看屏幕截图][1]

public ExamMarks()
    {
        InitializeComponent();
        // make the clicks on the picturebox invoke the click event
        // on our control
        Loading_pb.Click += (o, e) => { this.OnClick(e); };
    }
    public bool IsStart = false;
    [Description("Load Image .gif in the object"), Category("Data")]
    public Image LoadGIFImage
    {
        get { return Loading_pb.Image; }
        set { Loading_pb.Image = value; }
    }
    public void Start()
    {
        IsStart = true;
        this.Visible = true;
        var worker = new BackgroundWorker();
        worker.DoWork += new DoWorkEventHandler(Loading);
        worker.RunWorkerAsync();
    }
    public void Stop()
    {
        IsStart = false;
        this.Visible = false;
    }
    void Loading(object sender, DoWorkEventArgs e)
    {
        while (IsStart)
        {
            this.Refresh();
        }
    }

如何在进度微调器上执行单击事件

根据注释中的其他信息,我假设您正在使用此代码项目文章中的CNSpinner.dll

问题是控件是一个UserControl,其PictureBox完全覆盖了它。因此,即使将Click事件处理程序分配给控件,接收单击的实际控件也是控件中包含的PictureBox

您可以修改CNSpinner代码,只需在PictureBox上创建一个Click事件,该事件调用实际控件上的Click事件,但不修改CNSpinner控件,将永远不会调用您的事件。这是使用控件时控件实现的限制。

如果你想修改原始CNSpinner,一个简单的方法(不是唯一的,也不是最好的(是这样的(ProgressSpinner.cs

(:
public ProgressSpinner()
{
   InitializeComponent();
   // make the clicks on the picturebox invoke the click event
   // on our control
   Loading_pb.Click += (o,e) => { this.OnClick(e); }
}