none
DataGrid de row change event i hangisi RRS feed

  • 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 

    1 Ağustos 2019 Perşembe 10:11

Tüm Yanıtlar

  • Amacı ben anlamadım

    www.cihanyakar.com



    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...
    2 Ağustos 2019 Cuma 06:05
  • 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
    4 Ağustos 2019 Pazar 05:00
  • 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.

          Link1,Link2

    4 Ağustos 2019 Pazar 08:58