1

我正在创建一个像这样提供搜索选项的表单

我正在使用 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事件被调用了两次。

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

4

4 回答 4

2

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

于 2013-04-18T11:27:25.777 回答
0

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

Debug->Windows->Call Stack

于 2013-04-18T11:20:46.487 回答
0

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

于 2016-12-15T16:51:35.520 回答
0

我认为可能需要更改方法签名以使用RoutedEventArgs e

然后,在方法体的最后,可以设置e.Handled 为 True

     private void btnSearch_Click(object sender, RoutedEventArgs e)
 {
    // do some stuff  
    e.Handled = True

}
于 2022-02-17T04:57:54.230 回答