Programing

양식이로드 될 때 comboBox의 selectedIndexChanged 이벤트가 시작되지 않도록 중지

lottogame 2020. 10. 29. 07:46
반응형

양식이로드 될 때 comboBox의 selectedIndexChanged 이벤트가 시작되지 않도록 중지


ComboBox드롭 다운 목록을 제공 하는 양식이 있습니다. comboBox의 SelectedIndexChanged event에서 일부 코드를 실행하고 있지만 양식이로드 될 때 해당 코드가 실행되는 것을 원하지 않습니다. 불행히도 콤보 상자에서 선택하기 전에 양식을로드하면 SelectedIndexChanged콤보 상자가 실행됩니다 (콤보 상자가 일 때 생각합니다 databinding). 그러한 행동을 피할 수있는 방법이 있습니까?


사용자가 콤보 상자에서 선택한 항목을 변경할 때만 반응하려면 SelectionChangeCommitted 를 구독하는 것이 좋습니다 .


SelectedIndexChanged이벤트 바인딩을 해제하고 fill함수를 호출 한 다음 SelectedIndexChanged이벤트를 다시 바인딩 할 수 있습니다 . 불행히도 이것은 그리드에서 작동하지 않습니다.

예를 들면 :

this.cmb.SelectionChanged -= new System.EventHandler(this.cmb_SelectionChanged);
cmb.fill(); //Your function
this.cmb.SelectionChanged += new System.EventHandler(this.cmb_SelectionChanged);

속성 을 할당 한 후 함수 에서 DataSource속성 을 설정해야 합니다.onload()ValueMemberDatamember

이것은 문제를 해결하는 데 도움이 될 것입니다!


로딩이 끝났을 boolean때를 나타내는 플래그가 없는 이유는 무엇 Form입니까?

당신에 SelectionChanged경우 이벤트 확인 boolean플래그가 true. 그렇다면 true이벤트를 처리하고 그렇지 않으면 무시하십시오.


VB

RemoveHandler lbxNomes.SelectedIndexChanged, AddressOf lbxNomes_SelectedIndexChanged
lbxNomes.DataSource = dst
Label1.Text = String.Format("Encontrados {0} Sócios nesta pesquisa", dst.Rows.Count)
Label1.Visible = True
AddHandler lbxNomes.SelectedIndexChanged, AddressOf lbxNomes_SelectedIndexChanged

다음 코드로 나를 위해 일했습니다.

  private void ddlChapter_SelectionChangeCommitted(object sender, EventArgs e)
    {
        if (ddlChapter.SelectedValue != null)
        {
           // Do something here
        }
    }

참고 URL : https://stackoverflow.com/questions/3263240/stop-comboboxs-selectedindexchanged-event-from-firing-when-the-form-loads

반응형