2016-07-05 84 views
-4

雖然運行下面的代碼,我得到這個異常:無法轉換到事件處理KeyPressEventHandler

無法隱式轉換System.Eventhandler到 System.Window.Form.KeyPressEventHandler

private void grdPOItems_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) 
    { 
     int colIndex = grdPOItems.CurrentCell.ColumnIndex; 
     string colName = grdPOItems.Columns[colIndex].Name; 
     if(colName == "Qty" || colName == "Rate") 
     { 
      e.Control.KeyPress += new EventHandler(CheckKey); 
     } 
    } 

    private void CheckKey(object sender, EventArgs e) 
    { 
     if (((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar!='.')) 
     { 
      e.Handled = true; 
     } 
    } 
+0

你想達到什麼目的? – cverb

+0

可能重複的[無法隱式轉換類型'System.EventHandler'爲'System.EventHandler '故事板完成](https://stackoverflow.com/questions/16636830/cannot-implicitly-convert-type-system-eventhandler-到系統eventhandlerobj) –

回答

1

根據MSDN,您的處理程序有錯誤的簽名。改用它。

e.Control.KeyPress += CheckKey; 

private void CheckKey(object sender, KeyPressEventArgs e) 
{ 
    if (((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar!='.')) 
    { 
     e.Handled = true; 
    } 
}