Devexpress araçlarını kullanıyorum. Aşağıda her bir denetimi bir formdaki temel olarak denetler ve değerin değişip değişmediğini kontrol ederek bir olay denetleyicisini kontrole ayarlar. form kapandığında bunun doğru olup olmadığını kontrol edecek ve eğer varsa, kaydetmeyi isteyin. Şimdi iyi çalışıyor, ama bir gridcontrol içinde bir gridview değiştiğini kontrol etmek istiyorum. gridview altında hücre kaynaklı olarak adlandırılan bir olay var. İşleyiciyi gridview.cellvaluechanged öğesine eklemek istiyorum, ancak doğrudan erişemiyorum. Bir ızgara kontrolünün içinde. Bu kod aracılığıyla nasıl erişebilirim? İşte Izgara görünümü düzenleme değerinin olay yönetimi yoluyla değişip değişmediğini kontrol etme
'If TypeOf c Is GridControl Then
' Dim cb As GridControl = CType(c, GridControl)
' AddHandler cb.ViewCollection(0).GridControl ... dont know how to access gridview
'End If
benim tam çözüm gridview çeki olmayan
Dim is_Dirty As Boolean = False
Private Sub AddDirtyEvent(ByVal ctrl As Control)
For Each c As Control In ctrl.Controls
If TypeOf c Is TextEdit Then
Dim tb As TextEdit = CType(c, TextEdit)
AddHandler tb.EditValueChanged, AddressOf SetIsDirty
End If
'If TypeOf c Is ComboBoxEdit Then
' Dim cb As ComboBoxEdit = CType(c, ComboBoxEdit)
' AddHandler cb.SelectedIndexChanged, AddressOf SetIsDirty
'End If
If c.Controls.Count > 0 Then
AddDirtyEvent(c)
End If
Next
End Sub
Private Sub SetIsDirty(ByVal sender As System.Object, ByVal e As System.EventArgs)
is_Dirty = True
End Sub
Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
If is_Dirty = True Then
Dim dr As DialogResult = MessageBox.Show("Do you want save changes before leaving?", "Closing Well Info", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2)
If dr = Windows.Forms.DialogResult.Yes Then
SimpleButtonSave.PerformClick()
End If
End If