簡體   English   中英

在C#中調用DateTimePicker.ValueChanged事件?

[英]Call DateTimePicker.ValueChanged event in C#?

我創建了以下代碼,以使我的用戶可以看到打印出的記錄總數(當使用當前表單選擇運行搜索時將返回的總數)。

當DateTimePicker控件的值更改時(不同條件,新查詢,新記錄計數),我的代碼可以正常運行。 現在,當我名為cmbLetterType組合框控件的選定值發生更改時,我嘗試調用並運行相同的代碼事件。

private void dtpDate_ValueChanged(object sender, EventArgs e)
{
    // If not first run when form loads and sets dtpDate to current value.
     string qryCmd = "";
     OdbcDataReader dr;

     if (cnt > 1)
     {
         switch (cmbLetterType.SelectedIndex)
         {
             case 0:
                 docType = "oldAddr";
                 qryCmd = buildSearchQuery(docType);
                 break;
             case 1:
                 docType = "newAddr";
                 qryCmd = buildSearchQuery(docType);
                 break;
             case 2:
                 docType = "nameChg";
                 qryCmd = buildSearchQuery(docType);
                 break;
         }

         var newQry = qryCmd.Replace(qryCmd.Substring(0, qryCmd.IndexOf("FROM") - 1), "SELECT COUNT(*) AS COUNT");
         var orderByIndex = newQry.IndexOf("ORDER BY");
         newQry = newQry.Replace(newQry.Substring(orderByIndex, newQry.Length - orderByIndex), "");

         dr = mdl.GetData(newQry);
         while (dr.Read())
         {
             lblNumPrinted.Text =  "# out of " + dr["COUNT"].ToString() + " printed";
         }

         // NEED TO PERFORM ANOTHER QUERY COMBINED WITH BAC000PF to see how many records have not been printed.



         mdl.closeConn();
         lblNumPrinted.Visible = true;
     }
     cnt++;
}

private void cmbLetterType_SelectedValueChanged(object sender, EventArgs e)
{
    // ERROR ~~~~~~~~~
    dtpDate.ValueChanged();
}

當我輸入dtpDate.ValueChanged(); 但是,我收到: The Event 'System.Windows.Forms.DateTimePicker.ValueChanged' can only appear on the left hand side of += or -= 誰能幫我這個; 可以肯定,我忽略了一些非常基本的內容。

我想絕對可以在最壞的情況下完全復制代碼,但是就將來可能的維護而言,這似乎是一個壞主意。

簡單!

只需將事件處理程序dtpDate_ValueChanged內的所有內容放入另一個函數中...為其賦予一個好描述性的名稱。 現在從兩個地方調用它! ;)

private void dtpDate_ValueChanged(object sender, EventArgs e)
{
    DoTheStuff();
}

private void cmbLetterType_SelectedValueChanged(object sender, EventArgs e)
{
    DoTheStuff();
}

private void DoTheStuff()
{
    // Code goes here...
}

暫無
暫無

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

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