Şimdi Ara

C# da eventhandler tanımıyor. sorun nerede ?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
5
Cevap
0
Favori
447
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • 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
    }

    private object _eskiDeger; // Object tanimladik. boylece ister float gelsin ister string. tipleri kapsar

    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);
    }

    private void button2_Click(object sender, EventArgs e)
    {
    ogrenci.OgrenciAdi = Convert.ToString(textBox1.Text);
    ogrenci.OgrenciSinifi = Convert.ToString(textBox2.Text);
    ogrenci.OgrenciNumarasi = Convert.ToString(textBox3.Text);
    }
    void Yazdir(Student ogrenci)
    {
    richTextBox1.Text = $"Degisiklik yapildi \nOgrenci Adi:{ogrenci.OgrenciAdi} \nOgrenci Numarasi:{ogrenci.OgrenciNumarasi} #\nOgrenci Sinifi: {ogrenci.OgrenciSinifi}";
    }

    }
    }



    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.







  • Koduhttps://gist.github.com a koyun ve hata veren satırı belirtin hocam.

    < Bu ileti mini sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: Microsoft Specialist

    Koduhttps://gist.github.com a koyun ve hata veren satırı belirtin hocam.
    https://gist.github.com/anonymous/ea246b2704b8fe6a8af2e05bd9fa31a3

    Sanırım istediğin şekli ie bu idi. pek kullanmadım . hatayı Student sınıfı içindeki ilk set blokunda veriyor

    public string OgrenciAdi
    {
    get { return _adi; }
    set {

    if (StudentEventArgs.Empty!= null)
    {
    this.SudentInfoChanged(this, new StudentEventArgs("Ogrenci Adi", this._adi, value));
    }
    _adi = value; }
    }



    proje dosyası buradahttp://www55.zippyshare.com/v/7P1pix9r/file.html



    < Bu mesaj bu kişi tarafından değiştirildi revere -- 24 Mart 2017; 15:59:53 >




  • revere R kullanıcısına yanıt
    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 >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.