2014-10-17 35 views
0

我正在用C#編寫的應用程序,我想要簡單的事件處理代碼。如何在數據保存時引發自定義事件?

我有兩種形式,一種形式包含一個簡單的網格,其中包含客戶列表和一個具有一些文本框的表單,並接受將數據保存在數據庫中的客戶信息。

現在,我想在這個過程中使用事件。

當用戶使用的細節形式保存數據,事件應提高,它會重新在網格中的所有數據(與最近添加的記錄)

我有這樣的代碼這是寫在VB.NET,其相當簡單但我仍然無法理解如何編寫C#事件處理代碼。

VB代碼

網格形式的代碼

Private Sub AddCustomer() 
AddHandler Detailform.DataAdded, AddressOf AddRow 
End sub 

Private Sub AddRow() 
     dt = LoadAllCustomer() 
     gc.DataSource = dt 
     gv.FocusedRowHandle = OCustomerCollection.Count - 1 
End Sub 

代碼的客戶資料表格

'Declaration 

Public Event DataAdded() 

Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave. 
    SetProperties() 
    ' invoke save 
    oCustomer.Save() 

    RaiseEvent DataAdded() 
End sub 
+2

哦...好像要建立一個自定義事件C#..看看是否有幫助:http://stackoverflow.com/questions/6644247/simple-custom-event如果不是...嘗試搜索C#自定義事件https://www.google.com.hk/webhp? sourceid = chrome-instant&ion = 1&espv = 2&ie = ie = UTF-8#sourceid = chrome-psyapi2&ie = UTF-8&q = C%23%20custom%20event – User2012384 2014-10-17 06:05:57

回答

0

一些示例代碼:

public delegate void SavedEventHandler(/* parameters if you need any information what actually got saved */); 

public event SavedEventHandler Saved; 

public void OnSaved() { 
    var handler = this.Saved; 

    if (handler != null) { 
     handler(); 
    } 
} 

你DetailForm能夠比調用OnSaved當它這樣做節省:

this.OnSaved(); 

現在,您可以註冊或註銷的事件:

datailForm.Saved += ReloadData(); 
datailForm.Saved -= ReloadData(); 
+0

謝謝,但是代碼應該以列表形式寫入, ls形式? – bnil 2014-10-17 06:26:55

+0

列表窗體需要對您的detailForm的引用。比你可以在你的列表中調用detailForm.Saved + =。其他一切都屬於DetailForm。 – 2014-10-17 06:29:04

相關問題