2012-12-07 6 views
0

TextBox이 있습니다. 사용자가 입력을 시작하면 AcceptButton 속성을 다른 함수를 호출하도록 설정하려고합니다. 그러나 그것은 내 ToolStripButton에 의해 호출되는 다른 함수를 호출하고 있습니다.toolstripbutton에서 호출하는 함수를 호출하기 위해 toolstriptextbox 수락 단추를 어떻게 설정합니까?

private void locNameTxtBx_TextChanged(object sender, EventArgs e) 
{ 
    this.AcceptButton = searchBtn; 
} 

private void searchBtn_Click_1(object sender, EventArgs e) 
{ 
    if (locNameTxtBx.Text != "") 
    { 
     List<SearchLocation> locationsArray = new List<SearchLocation>(); 
     var location = locNameTxtBx.Text; 
     SearchLocation loc = new SearchLocation(); 
     loc.Where = location; 
     locationsArray.Add(loc); 
     mapArea.VE_FindLocations(locationsArray, true, true, null); 
     mapArea.VE_SetZoomLevel(14); 
    } 
    else 
    { 
     MessageBox.Show("Please Enter Location"); 
    } 
} 

searchBtnToolStrip에서 Button입니다 : 정교, 여기 아래에있는 내 코드입니다. 이 코드를 실행하려고 할 때, 나는 암시 'System.Windows.Forms.IButtonControl'에 유형 'System.Windows.Forms.ToolStripButton을'변환 할 수 없습니다이 오류

를 얻을. 명시 적 변환이 존재한다 (당신은 캐스트를 누락?)

내가 이런 ToolstripButton로 캐스팅 시도 :

private void locNameTxtBx_TextChanged(object sender, EventArgs e) 
{ 
    this.AcceptButton = (ToolStripButton)searchBtn; 
} 
+0

툴 스트립 버튼은 수락 버튼이있는 호환 유형이 아닙니다. –

+0

이 일을 할 수 없다는 뜻입니까? @ColeJohnson –

+0

그냥 코드에있는 코드로 함수를 정의하고 단추로 호출해야하는 이유는 무엇입니까? –

답변

0

당신은이 명 대표를 사용하고 locNameTxtBx_TextChanged에서 사용하는 대리자를 설정할 수 있습니다 방법.

private delegate void ToUseDelegate(); 

    ToUseDelegate delegateIfNoText = delegate{ 
     MessageBox.Show("Please Enter Location"); 
    } 

    ToUseDelegate delegateIfText = delegate{ 
     List<SearchLocation> locationsArray = new List<SearchLocation>(); 
     var location = locNameTxtBx.Text; 
     SearchLocation loc = new SearchLocation(); 
     loc.Where = location; 
     locationsArray.Add(loc); 
     mapArea.VE_FindLocations(locationsArray, true, true, null); 
     mapArea.VE_SetZoomLevel(14); 
    } 

    ToUseDelegate delToUse = delegateIfNoText; 

    private void locNameTxtBx_TextChanged(object sender, EventArgs e) 
    { 
     this.AcceptButton = searchBtn; 
     if (locNameTxtBx.Text != ""){ 
      delegateToUse = delegateIfNoText; 
     } else { 
      delegateToUse = delegateIfText; 
     } 
    } 

    private void searchBtn_Click_1(object sender, EventArgs e) 
    { 
     delegateToUse(); 
    } 
+0

이 작업을 수행하는 방법을 잘 모름 –

+0

@ifelabolz 몇 가지 코드를 추가했습니다. – Tobias

관련 문제