如何在Progress微调器上执行click事件?

时间:2016-02-17 18:37:35

标签: c# progress-bar mouseevent

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

![见截图] [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();
        }
    }

1 个答案:

答案 0 :(得分:0)

根据评论中的其他信息,我假设您使用this codeproject article中的CNSpinner.dll

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

您可以修改CNSpinner代码,只在Click上发出PictureBox事件,调用实际控件上的Click事件,但不修改{{ 1}}控制,永远不会调用你的事件。当你使用它时,这是对控件实现的限制。

如果你想修改原始的CNSpinner,一个简单的方法(不是唯一的,也不是最好的方式)就像(在CNSpinner上):

ProgressSpinner.cs