2017-02-23 92 views
0

我在WinForms中有一個ComboBox,我從中將項目從下拉列表拖到一個picturebox上。如果我將項目直接拖出組合(右側或左側),SelectedIndexChanged會觸發一次。但是,如果我在光標離開組合框之前將其他項目懸停在下拉列表中,事件將觸發兩次。 我嘗試了幾乎所有我無法找到的建議。而且,是的,SelectedChangeCommitted的工作方式相同。 解決方案的任何想法?ComboBox SelectedIndexChanged如果將鼠標懸停在下拉框架上會觸發兩次

+1

你能提供一些代碼 – Usman

+1

請提供相關代碼,並在閱讀了[最少的,完整的和可驗證的示例](http://stackoverflow.com/help/mcve) –

回答

0

有趣的是,它可以幫助只是發佈一個問題!我自己找到了一個可用的解決方法,如下所示: 首先我添加了一個初始設置爲0的全局整數。然後,在SelectionChangeCommitted中,我將此值加1,然後確保代碼僅在此值爲1時才運行。問題出在無論我將該變量重置爲零(爲下一次拖動操作做好準備),它都會執行兩次代碼。 解決方案是僅在組合的MouseClick事件中進行重置,因爲這發生在更改事件之前。當我嘗試開始下一個拖動操作時,它將被重置。

int runonce = 0; 

    private void cmbTags_MouseClick(object sender, MouseEventArgs e) 
    { 
     runonce = 0; 
    } 

    private void cmbTags_SelectionChangeCommitted(object sender, EventArgs e) 
    { 
     runonce++; 
     if (runonce == 1) 
     { 
      // My cmbTags_SelectionChangeCommitted-code 
     } 
    } 
相關問題