Soran
DataGrid de row change event i hangisi

Soru
-
Datagrid i databate e bağlamadan normal grid olarak kullanıyorum
Row change için CurrentCellChanged i kullanıyorum ama rowchange keşke olsa daha mantıklı olacak. bunun doğru event i hangisi satır değiştirdiğinde tetiklenmesi gereken
Dbclick ile birlikte sıkıntı yaşadımda ondan soruyorum iki olayda olmaya çalışıyor dbclick yaptığımda buda exe de error yaratıyor bir şeyler çakışıyor
DBClick yapınca cell change event i çalışmasın istiyorum ondan. satır değiştirmek için yanlış event kullanıyorum gibime geldi CurrentCellChanged yanlış seçimmi
Tüm Yanıtlar
-
- Düzenleyen Cihan YakarMVP 1 Ağustos 2019 Perşembe 18:41
-
Aslında problem binding kullanmamak ve işlerinizi eventler ile datagrid üzerinden yaptırmaya çalışmaktan dolayı gibi.
Halbuki şöyle yapsanız mesela :
Verilerinizi temsil eden sınıf örneği :
public class MyData : INotifyPropertyChanged, IEditableObject { private bool isEditing; private bool isChanged; private string ad; public string Ad { get { return ad; } set { if (ad != value) { ad = value; OnPropertyChanged(); } } } private int yas; public int Yas { get { return yas; } set { if (yas != value) { yas = value; OnPropertyChanged(); } } } public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged([CallerMemberName]string propertyName = null) { if (isEditing) { isChanged = true; } PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } public void BeginEdit() { isEditing = true; } public void CancelEdit() { isEditing = false; } public void EndEdit() { if (isChanged) { //SQL kodları buraya gelebilir } isEditing = false; } }
Datagride baglama kısmı :
dataGridView3.DataSource = new BindingList<MyData> { new MyData(){Ad="Mehmet",Yas=23}, new MyData(){Ad="Haluk",Yas=30}, new MyData(){Ad="XXX",Yas=88}, };
Umarım yardımı dokunur , kolay gelsin... -
sorunu buldum problemim exe de bir yerde grid cell change bir iş yaparken dbclick modal form açıyordu. İki taraftaki Application.DoEvents() ler bir şeye sebep olup hata üretiyordu. Bir kaç tanesini kaldırsam yetecekti ama korkumdan Application.DoEvents() ların hepsini projemden kaldırdım 30 tane varmış hepsini kaldırdım error ortadan kalktı.
Bu derdi anlatmasıda anlamasıda zor o yüzden anlatmıycam ama merak ettiğim şu Application.DoEvents() kullanmak kötü bir şeymi genel anlamda. Yani diğer işlemleri yapmasına izin vermek arada sorun olabilir dimi mantıken. Bazen gerekiyor gibi ama sorunda çıkartma potansiyeli var biraz
- Düzenleyen hakan1992 4 Ağustos 2019 Pazar 05:01
-
sorunu buldum problemim exe de bir yerde grid cell change bir iş yaparken dbclick modal form açıyordu. İki taraftaki Application.DoEvents() ler bir şeye sebep olup hata üretiyordu. Bir kaç tanesini kaldırsam yetecekti ama korkumdan Application.DoEvents() ların hepsini projemden kaldırdım 30 tane varmış hepsini kaldırdım error ortadan kalktı.
Bu derdi anlatmasıda anlamasıda zor o yüzden anlatmıycam ama merak ettiğim şu Application.DoEvents() kullanmak kötü bir şeymi genel anlamda. Yani diğer işlemleri yapmasına izin vermek arada sorun olabilir dimi mantıken. Bazen gerekiyor gibi ama sorunda çıkartma potansiyeli var biraz
SQLite'ı keşfettiğiniz deki mutluluğunuzu tüm forum olarak biliyoruz :) Şimdilerde yine siz yeni teknolojilere geçmektense winform gibi tarihi eserlerle program yazmaya çalışıyorsunuz , bir gün formun kötü olduğunu anladığınızda eminim bir sevinç nidası daha duyacağız.
Application Doevents yerine en azından thread kullanın.