2010-08-27 155 views
7

這是一個WinForms C#問題。如何在DataGridView中更改單元格值時進行監視?

我有一個自定義的DataGridView控件繼承自標準的DataGridView類。每當一個單元格添加到網格中時,我想要監視該單元格中的單元格值。我不知道如何做到這一點。

DataBindingCompleted事件在單元格/行/列級別無可奈何。 CellValueChanged事件讓自己感到困惑,因爲它僅在用戶從UI修改值時觸發,並且如果該值是從基礎數據源更新的,則無法使用。什麼是適當的事件來聽?

我知道DataGridViewCell類有一個ValueChanging事件。但是在定製的DataGridView中,我怎樣才能將我的事件偵聽器掛接到每個單元格?

感謝您的幫助。

回答

-1

在您的自定義控制,你需要一個全球性的事件變量:

public event EventHandler CustomCellValueChanged; 

你需要設置更改事件與此單元格:在您的形式

private void gvGridView_CellValueChanged(object sender, EventArgs e) 
    { 
     EventHandler Handler = CustomCellValueChanged; 
     if (Handler != null) { Handler(this, e); }; 
    } 

然後,你就可以檢查事件CustomCellValueChanged

+1

這並不能解決原來的問題。它創建了一個無用的CellValueChanged的冗餘副本,因爲該子類仍然可以訪問原始事件。作爲指定問題的作者,單元格添加到網格時它不會觸發。 – 2010-08-27 18:29:20

+0

同意布拉德利。但是,仍然感謝你的努力。 – Steve 2010-08-28 00:56:19

+0

對不起,看錯了這個問題。我的錯。 – Wildhorn 2010-08-30 12:16:23

1

1,您可以在定製DataGridView時繼承DataGridView。如果繼承UserControl來定製DataGridView,則無法直接獲取CellValueC在其他項目或應用程序中生成自定義DataGridView時掛起的事件。

2,在CellValueChanged中做些事情。

3,繼承DataGridView工具。

(1)創建UserControl.Name是DataGridViewEx。

(2)修改繼承。 public partial class DataGridViewEx : UserControl ==>public partial class DataGridViewEx :DataGridView

(3)打開和DataGridViewEx.Designer.cs屏蔽//this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; .The句子是在該方法的InitializeComponent()。

相關問題