如何在 Progress 微调器上执行点击事件?
How can I perform the click event on a Progress spinner?
我希望进度微调器像按钮一样工作。我在进度微调器上添加了一个 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();
}
}
根据评论中的附加信息,我假设您使用的是 this codeproject article 中的 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); }
}
我希望进度微调器像按钮一样工作。我在进度微调器上添加了一个 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();
}
}
根据评论中的附加信息,我假设您使用的是 this codeproject article 中的 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); }
}