2016-02-17 25 views
0

我希望進度微調器像按鈕一樣工作。我在進度微調器上添加了一個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(); 
     } 
    } 
+0

你忘了添加事件處理程序只添加了代碼部分? – Peroxy

+0

你如何向微調者註冊活動? – Tdorno

+1

哪個控件是?它在屏幕截圖上顯示'CNSpinn ...',它看起來不像標準winforms控件 – Jcl

回答

0

隨着評論的附加信息,我assumming您使用CNSpinner.dllthis codeproject article

問題是,該控件是一個UserControlPictureBox完全覆蓋它。因此,即使您將Click事件處理程序分配給控件,接收點擊的實際控件也是控件中包含的PictureBox

可以修改CNSpinner代碼,只是就調用實際控制Click事件PictureBox一個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); } 
} 
+0

先生,實際上我想在我的表單上顯示一個動畫gif圖片作爲按鈕,所以我使用微調控件在窗體上顯示動畫圖片。請你可以分享另一種方法來顯示勝利表格上的gif圖片,而不是使用進度微調器。 –

+0

@PrashantArora進步微調不是「那麼糟糕」(雖然實施可能會更好,但可以)。這只是一個'BackgroundWorker',強制刷新一個'PictureBox'控件。你可以自己做,或者只是添加我在同一個'CNSpinner'上給出的修改(你需要下載源代碼並自己編譯,但不應該那麼難) – Jcl

+0

對不起,先生,點擊事件仍然不起作用。請參閱上面我編輯的問題,以顯示我申請的代碼。 –

相關問題