簡體   English   中英

Button_Click() 事件在 windows 桌面應用程序中觸發兩次

[英]Button_Click() Event fires twice in windows desktop application

我正在創建一個表單,其中提供了這樣的搜索選項

我在 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事件被調用了兩次。

我應該怎么做才能解決這個問題。
請幫忙。

在WPF中,您必須在FillGrid(query)之后將FillGrid(query)設置為True
在win表單中,刪除並且不要在Load()中注冊btnSearch.Click

在Visual Studio中打開CallStack並找出調試時調用Click事件的函數。

Debug->Windows->Call Stack

如果是WPF項目,請確保沒有在XAML中注冊的單擊處理程序和項目的C#代碼。 我有同樣的問題,這是由於這個原因。

我認為可能需要更改方法簽名以使用RoutedEventArgs e

然后,在方法主體的末尾,您可以將e.Handled 設置為 True

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

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM