2010-08-27 27 views
7

Questa è una domanda C# di WinForms.Come monitorare ogni volta che un valore di cella viene modificato in DataGridView?

Ho un controllo DataGridView personalizzato ereditato dalla classe DataGridView standard. Voglio monitorare il caso ogni volta che una cella viene aggiunta alla griglia, un valore di cella viene modificato nella griglia. Non ho idea di come farlo.

L'evento DataBindingCompleted è indifeso a livello di cella/riga/colonna. L'evento CellValueChanged si confonde da solo poiché viene attivato solo quando l'utente modifica un valore dall'interfaccia utente ed è impotente se il valore viene aggiornato dall'origine dati sottostante. Qual è l'evento giusto da ascoltare?

So che la classe DataGridViewCell ha un evento ValueChanging. Ma nel DataGridView personalizzato, come posso collegare il mio listener di eventi a ogni cella?

Grazie per l'aiuto.

risposta

-1

Nel vostro controllo personalizzato, è necessario una variabile evento globale:

public event EventHandler CustomCellValueChanged; 

è necessario impostare la cella modificata evento con questo:

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

Poi nel modulo, si sarà in grado per verificare l'evento CustomCellValueChanged

+1

Questo non risolve il problema originale. Crea una copia ridondante di CellValueChanged che non ha alcuno scopo, poiché la sottoclasse fornirà comunque l'accesso all'evento originale. Non si attiva quando le celle vengono aggiunte alla griglia, come l'autore della domanda specificata. –

+0

D'accordo con Bradley. Ma ancora grazie per lo sforzo. – Steve

+0

Ah scusa, ho letto male la domanda. Colpa mia. – Wildhorn

1

1, È possibile ereditare DataGridView quando personalizzato DataGridView.If eredita UserControl per personalizzare DataGridView, non è possibile ottenere direttamente CellValueC evento impiccato durante la generazione di DataGridView personalizzato in altri progetti o applicazioni.

2, Per fare qualcosa in CellValueChanged.

3, Inherit strumento DataGridView.

(1) Crea UserControl.Name è DataGridViewEx.

(2) Modifica eredita. public partial class DataGridViewEx : UserControl ==>public partial class DataGridViewEx :DataGridView

(3) DataGridViewEx.Designer.cs aperte e lo scudo //this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; .La frase è nel metodo InitializeComponent().

Problemi correlati