0

TextBoxにがあります。ユーザーが入力を開始したら、別の関数を呼び出すようにプロパティを設定したいと思います。ただし、 myで a によって呼び出される別の関数を呼び出しています。詳しく説明すると、以下の私のコードは次のとおりです。AcceptButtonButtonToolStrip

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");
    }
}

searchBtnButtonですToolStrip。したがって、このコードを実行しようとすると、このエラーが発生します

タイプ 'System.Windows.Forms.ToolStripButton' を 'System.Windows.Forms.IButtonControl' に暗黙的に変換することはできません。明示的な変換が存在します (キャストがありませんか?)

次のように ToolstripButton としてキャストしてみました。

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

1 に答える 1

0

2 つのデリゲートを使用して、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();
    }
于 2012-12-07T15:38:57.747 に答える