如何在进度微调器上执行单击事件
本文关键字:执行 单击 事件 | 更新日期: 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); }
}