Button_Click()事件在Windows桌面应用程序中触发两次

时间:2013-04-18 11:18:31

标签: c# events desktop-application buttonclick

我正在创建一个表单,其中提供的搜索选项如this

我正在使用MDI表单应用程序。

我的代码是:

 private void btnSearch_Click(object sender, EventArgs e)
 {

    string query = null;
    if (txtBillNo.Enabled && txtBillNo.Text.Trim().Length != 0)
    {
        query = "Select BillNo,PartyName,City,State,FORMAT(BillDt,'dd-mm-yyyy')as Dt from BillMaster where BillNo=" + Convert.ToInt32(txtBillNo.Text.Trim());
        FillGrid(query);
    }
    else if (txtName.Enabled && txtName.Text.Trim().Length != 0)
    {
            query = "Select BillNo,PartyName,City,State,FORMAT(BillDt,'dd-mm-yyyy')as Dt from BillMaster where UCASE(PartyName) like '" + txtName.Text.Trim().ToUpper() + "'";
            FillGrid(query);
    }

    else
    {
        MessageBox.Show("Enter Value First");

        if (rdbName.Enabled)
        {
            txtName.Focus();

        }
        else if (rdbBillNo.Enabled)
        {
           txtBillNo.Focus();

        }

    }                 

}

条件是检查是否保留文本框。如果它留空,那么我将发出用户必须输入值的消息。但是当我运行程序时它会提示两次,然后我调试了程序,发现Click事件被调用了两次。

我该怎么做才能解决这个问题 请帮忙。

3 个答案:

答案 0 :(得分:2)

在WPF中,您必须在FillGrid(query)之后将e.Handled设置为True 在win表单中,删除并且不要在Load()

中注册btnSearch.Click

答案 1 :(得分:0)

在Visual Studio中打开CallStack,找出调试时调用Click事件的函数。

Debug->Windows->Call Stack

答案 2 :(得分:0)

如果是WPF项目,请确保您没有在XAML中注册的Click Handler和项目的C#代码。我有同样的问题,这是由于这个原因。