• 20-01-2023, 15:40:54
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    R10 ailesinin çok değerli üyelerine selam olsun,
    arkadaşlar 2 adet usercontrolum var. uc1 de datagridview nesnem ile addrow() metodum var. uc2 den bu metodu çalıştırdığımda çalışmıyor. Çözümü bilenler el atabilir mi?

    public partial class UC_1 : UserControl
     {
    public UC_1()
            {
                InitializeComponent();
                dataGridView1 = DGV;
            }
    
     public DataGridView DGV
            {
                get { return dataGridView1; }
            }
       public void addRow()
            {
               dataGridView1 .Rows.Add("test1","test2");
            }
    }
    public partial class UC_2 : UserControl
     {
    public UC_1 _instance ;
            public  UC_2(UC_1 uc1)
            {
                _instance = uc1;
            }
    
     private  void btnBaslat_Click(object sender, EventArgs e)
            {
                _instance.addRow ();
            }
    
    }
  • 20-01-2023, 15:45:17
    #2
    UC_2 sınıfındaki btnBaslat_Click olay işleyicisinde, _instance değişkeni için atanmış UC_1 sınıfının addRow metodunu çağırmaktadır.
    Ancak, addRow metodu dataGridView1 nesnesine eriÅŸirken ListGrid.Rows.Add("test1","test2") kullanmakta.
    Bu nedenle, addRow metodu ListGrid nesnesine erişmekte ve Rows özelliğine eklemekte ancak dataGridView1 nesnesi için değil.
    Bu yüzden addRow metodu çalışmıyor. Eğer addRow metodunda dataGridView1 nesnesine erişmek istiyorsanız, ListGrid yerine dataGridView1 kullanmanız gerekir.

    Örnek olarak;
    dataGridView1.Rows.Add("test1","test2") ÅŸeklinde deÄŸiÅŸtirmelisiniz.
  • 20-01-2023, 15:49:06
    #3
    bahax41 adlı üyeden alıntı: mesajı görüntüle
    UC_2 sınıfındaki btnBaslat_Click olay işleyicisinde, _instance değişkeni için atanmış UC_1 sınıfının addRow metodunu çağırmaktadır.
    Ancak, addRow metodu dataGridView1 nesnesine eriÅŸirken ListGrid.Rows.Add("test1","test2") kullanmakta.
    Bu nedenle, addRow metodu ListGrid nesnesine erişmekte ve Rows özelliğine eklemekte ancak dataGridView1 nesnesi için değil.
    Bu yüzden addRow metodu çalışmıyor. Eğer addRow metodunda dataGridView1 nesnesine erişmek istiyorsanız, ListGrid yerine dataGridView1 kullanmanız gerekir.

    Örnek olarak;
    dataGridView1.Rows.Add("test1","test2") ÅŸeklinde deÄŸiÅŸtirmelisiniz.
    kodları buraya yazarken elle yazdığım için yanlış yazdım hocam düzelttim onu veri alış verişi yapabiliyorum mesela 2 control arasında ama olay tetiklemeye gelince tetikliyor fakat bişey olmuyor
  • 20-01-2023, 15:57:26
    #4
    dataGridView1 nesnesi nerede tanımlanmış hocam
  • 20-01-2023, 16:01:13
    #5
    bahax41 adlı üyeden alıntı: mesajı görüntüle
    dataGridView1 nesnesi nerede tanımlanmış hocam
    Uc_1'in içinde hocam
  • 28-01-2023, 20:07:20
    #6
    Eğer UC_1'de tanımladığınız addRow() metodunu UC_2'den çağırmak istiyorsanız, UC_2 sınıfının içerisinde UC_1 sınıfından bir nesne oluşturmanız ve bu nesnenin addRow() metodunu çağırmanız gerekir. Örneğin, UC_2 sınıfının içerisinde bir UC_1 nesnesi oluşturup btnBaslat_Click olayı içerisinde bu nesnenin addRow() metodunu çağırıyorsunuz. Bu şekilde çalışır olması gerekir. Ancak eğer hala çalışmıyorsa, UC_1 sınıfının DGV nesnesinin tanımlanmış ve doğru bir şekilde atanmış olduğundan emin olun. Ayrıca, UC_2 sınıfının içerisinde oluşturduğunuz UC_1 nesnesinin addRow() metodunun çağrılmasına izin verilip verilmediğine de bakın.

    Aşağıda UC_1 ve UC_2 sınıflarının düzeltilmiş versiyonlarını görebilirsiniz:
    public partial class UC_1 : UserControl
     {
        public DataGridView DGV { get; set; }
        public UC_1()
        {
            InitializeComponent();
        }
        public void addRow()
        {
            DGV.Rows.Add("test1","test2");
        }
    }
    
    public partial class UC_2 : UserControl
     {
        public UC_1 _instance;
        public UC_2()
        {
            InitializeComponent();
            _instance = new UC_1();
        }
     
        private void btnBaslat_Click(object sender, EventArgs e)
        {
            _instance.addRow();
        }
    }
    UC_1 sınıfında DGV nesnenin tanımlanması ve başlangıç değerlerinin atanması için constructor kullanılmıştır. Ayrıca, addRow() metodunda DGV nesnesinin kullanılması için get/set metodları kullanılmıştır. UC_2 sınıfında ise, constructor içerisinde UC_1 nesnesi oluşturulmuş ve btnBaslat_Click olayı içerisinde bu nesnenin addRow() metodu çağrılmıştır. Bu şekilde çalışması gerekir.