Constructor yeni değeri alıyor ama evetn tarafında sıkıntı var. Event olarak oluşturduğum tetikleyiciyi if bloku içine göremiyorum. Bu yüzden kod ekrana yazılmıyor.
SudentEventArg.cs
namespace exappp { public delegate void StudentEventHandler (Student sender, StudentEventArgs e); //studentEventHandler`i Student sinifi icin olusturduk. Student icin parametre olarak alabiliriz
public class StudentEventArgs : EventArgs // EventArgs sinifindan miras aldik { public StudentEventArgs(string PropName, object EskiDeger, object YeniDeger) // Yapici method tetiklendiginde { this._propType = PropName; this._eskiDeger = EskiDeger; this._yeniDeger = YeniDeger; // Disaridan parametre olarak gelen verileri iceride bellekte olan alana aktariyoruz }
public object EskiDeger { get { return _eskiDeger; } // set { _eskiDeger = value; } Boylece degerler sadece readonly olmus oluyor set accessor"un disable edilmesi ile } private object _yeniDeger;
public object YeniDeger { get { return _yeniDeger; } //set { _yeniDeger = value; } }
private string _propType;
public string PropType { get { return _propType; } //set { string _propType = value; } }
} }
Student.cs
public class Student { public event StudentEventHandler SudentInfoChanged; // delegate olan EventHandler sinifindan event"i olsturduk
private string _adi;
public string OgrenciAdi { get { return _adi; } set {
if (StudentEventArgs.Empty!= null) { this.SudentInfoChanged(this, new StudentEventArgs("Ogrenci Adi", this._adi, value)); } _adi = value; } }
private string _sinifi;
public string OgrenciSinifi { get { return _sinifi; } set { if(StudentEventArgs.Empty!=null) { this.SudentInfoChanged(this, new StudentEventArgs("Ogrenci Sinifi", this._sinifi, value)); } _sinifi = value; } }
private string _numarasi;
public string OgrenciNumarasi { get { return _numarasi; } set { if (StudentEventArgs.Empty!=null) { this.SudentInfoChanged(this, new StudentEventArgs("Ogrenci Numarasi", this._numarasi, value)); } _numarasi = value; } } } }
form1.cs
namespace exappp { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Student ogrenci; private void button1_Click(object sender, EventArgs e) { ogrenci = new Student(); //Bellekte Student sinifindan bir instane olusturuyoruz ogrenci.OgrenciAdi = Convert.ToString(textBox1.Text); ogrenci.OgrenciSinifi = Convert.ToString(textBox2.Text); ogrenci.OgrenciNumarasi = Convert.ToString(textBox3.Text); Yazdir(ogrenci); }
SudentInfoChanged eventi null oldugu icin hata veriyor. eventi cagiracak bir metod olusturacaksin, metodda da "eger event null degilse eventi cagir" diyecek. setter'larda da o metodu cagiracaksin.
kodu kisalttim sadece ogrenci adini kapsayacak sekilde, digerlerine de uygularsin ayni sekilde
.
< Bu mesaj bu kişi tarafından değiştirildi VatandA.Ş. -- 4 Eylül 2021; 17:30:41 >
SudentEventArg.cs
Student.cs
form1.cs
nullreferanceException was unhandled
An unhandled exception of type 'System.NullReferenceException' occurred in exappp.exe
Additional information: Object reference not set to an instance of an object.
lakin ben break point attıımda yeni değere oluşturduğum değişkene atanmış görünüyor.
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.