GroupBox Item Ekleme

        
        
private void gbxOgrenciGoster()
{
    gbxOgrenciPanel.Controls.Clear();                                       //GroupBox in Controls Temizleme
    db = new Context.Context();                                             //Database Baglantisi Acildi
    string sinifAdi_ = cbxSiniflar.SelectedItem.ToString();                 //ComboBox dan Secilen Sinifi Aldim
    foreach(var item in db.ogrencilers)
    {    
                //Label Ekleme
        Label lblOgrenci = new Label();                                      
        lblOgrenci.Text = item.AdiSoyadi;                                    //Label Textine Ogrencinin AdiSoyadini Atadim 
        lblOgrenci.Top = 15;                                                 //Label Bir Onceki Itemden 15px Asagida Olacak
        lblOgrenci.Left = 2;                                                 //Label Soldan 2px Bosluk Biraktim
        Point locLbl = new Point(5, (5 * sayac));                            //Label new Point ile Yeni Location Belirledim
        lblOgrenci.Location = locLbl;                                        //Label Location Atama
        gbxOgrenciPanel.Controls.Add(lblOgrenci);                            //GroupBox (gbxOgrenciPanel) Controls e Olusturdugum Labeli Ekledim
                                                                             //Bu Kismi Cogaltarak Farklı Labeller Ekleyebilirsiniz.
    
                //NumericUpDown Ekleme
        NumericUpDown nmrCeza = new NumericUpDown();                                     
        nmrCeza.Value = item.Ceza;                                            //NumericUpDown Value Ogrencinin Cezasi (Degeri) Atandi 
        nmrCeza.Top = 20;                                                     //NumericUpDown Bir Onceki Itemden 15px Asagida Olacak
        nmrCeza.Left = 102;                                                   //NumericUpDown Soldan 102px Uzaklikta Olacak 
                                                                              //        (2px + Label'in Ortalama Uzunlugu + Bosluk)
        nmrCeza.Size = new Size(40, 20);                                      //NumericUpDown Boyutları Atandi (Boyut * Yukseklik)
        nmrCeza.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;  //NumericUpDown Text inin Hizalaması Center (Orta) Secildi
        nmrCeza.Maximum = 5;                                                  //NumericUpDown Value Maximum 5 Secildi
        Point locNmr = new Point(100, (5 * sayac));                           //NumericUpDown new Point ile Yeni Location Belirledim
        nmrCeza.Location = locNmr;                                            //NumericUpDown Location Atama
        nmrCeza.Name = item.Id.ToString();                                    //NumericUpDown Name Ogrencinin Id si Atadim (Sonra Lazim Olacak)
        nmrCeza.ValueChanged += nmrCeza_ValueChanged;                         //NumericUpDown ValueChanged Ozelligini Aktif Ettim 
                                                                              //        (Degeri Degistiginde Database e Aktarmak Icın)
        gbxOgrenciPanel.Controls.Add(nmrCeza);                                //GroupBox (gbxOgrenciPanel) Controls e Olusturdugum NumericUpDown Ekledim 
    }
    db.Dispose();
}
                  
                        
                    
                



GroupBox Item NumericUpDown Controls (ValueChanged)

        
        
private void nmrCeza_ValueChanged(object sender, EventArgs e)
{
    Int16 myId = Convert.ToInt16(((NumericUpDown)sender).Name);                 //NumericUpDown un Sender dan Gelen Name i myId e atadim
    if (((NumericUpDown)sender).Value == 5)                                     //NumericUpDown un Sender dan Gelen Value Degeri 5 mi Kontrol Ettim.
    {                                                                           
        db = new Context.Context();                                             //Database Baglantisi Acildi
        var ogrenciCeza = db.ogrencilers.FirstOrDefault(x => x.Id == myId);     //myId ile Database den Ogrenciyi Sectim
        ogrenciCeza.Ceza = 0;                                                   //Ogrenci nin Cezasini Sifirladim
        db.SaveChanges();                                                       //Database Degisiklikleri Aktardim
        CezaEkle(myId);                                                         //CezaEkle Metoduma myId mi Gonderdim( Yapilan Islemlere Ordan Devam Edicez)
    }                                                                           
    else                                                                        
    {                                                                           //NumericUpDown un Sender dan Gelen Value Degeri 5 Degilse
        db = new Context.Context();                                             //Database Baglantisi Actim
        var ogrenciCeza = db.ogrencilers.FirstOrDefault(x => x.Id == myId);     //myId ile Database den Ogrencimi Sectim (ogrenciCeza ya Atadim)
        ogrenciCeza.Ceza = Convert.ToInt16(((NumericUpDown)sender).Value);      //ogrenciCeza nin Ceza Elemanina Value mi Atadim
        db.SaveChanges();                                                       //Database Degisiklikleri Aktardim
    }                                                                           
    db.Dispose();                                                               //Database Baglantisini Kestim.
}
                        
                        
                    
                



Method -> Ekle

            
                
private void CezaEkle(Int16 ogrenciId)                                            //CezaEkle Metodumu Olusturdum       
{                                                                                 //        Ogrencinin Id sini Alacak 
    db = new Context.Context();                                                   //Database Baglantisini Acildi
    var ogrenciCeza = db.ogrencilers.FirstOrDefault(x => x.Id == ogrenciId);      //Ogrenciyi Sectim
    Cezalar c = new Cezalar();                                                    //Cezalar Tipinde 'c' Olusturdum
    c.OgrenciId = ogrenciCeza.Id;                                                 //Ogrencinin Bilgilerini Atadim
    c.Tarih = DateTime.Now;                                                       
    c.CezaAdet = 0;                                                               
    db.cezalars.Add(c);                                                           //Olusturdugum 'c' yi Database Aktardim
    db.SaveChanges();                                                             //Database Degisiklikler Kaydedildi
    CezaKontrol(ogrenciCeza.SinifId);                                             //CezaKontrol Metoduma Sinifin Id sini Gonderdim
    gbxOgrenciGoster();                                                           //gbxOgrenciGoster Yeniden Calistirildi
    db.Dispose();                                                                 //Database Baglantisi Kapatildi
}
                                        
            
        



Method -> Kontrol

        
        
 private void CezaKontrol(int sinifId)                                                      //CezaKontrol Methodu Olusturuldu
{                                                                                           
    panelCezalar.Controls.Clear();                                                          //panelCezalar in Controls Temizlendi
    try                                                                                     //Database Okumada Bir Hata ile Karsilasilmasi Durumumda
    {                                                                                       //          Programin Devam Edebilmesi Icin Try Catch Kullanildi
        string sinifim = cbxSiniflar.SelectedItem.ToString();                               //
        if (sinifim != null)                                                                //
        {                                                                                   //
            db = new Context.Context();                                                     //
            int sinifID = db.siniflars.FirstOrDefault(x => x.Id == sinifId).Id;             //
                                                                                            //
            foreach (var itemOgrenci in db.ogrencilers.Where(x => x.SinifId == sinifID))    //
            {                                                                               //
                db = new Context.Context();                                                 //
                var list = db.cezalars.ToList();                                            //
                foreach (var itemCezalar in list)                                           //
                {                                                                           //
                    if (itemCezalar.OgrenciId == itemOgrenci.Id)                            //
                    {                                                                       //
                        sayac1++;                                                           //
                        Label lblOgrenci1 = new Label();                                    //
                        lblOgrenci1.Text = itemOgrenci.AdiSoyadi;                           //
                                                                                            //
                        Point locLbl = new Point(5, (5 * sayac1));                          //
                        lblOgrenci1.Location = locLbl;                                      //
                        panelCezalar.Controls.Add(lblOgrenci1);                             //
                        lblList.Add(lblOgrenci1);                                           //
                                                                                            //
                        DateTimePicker dtCezaTarih = new DateTimePicker();                  //
                        dtCezaTarih.Value = itemCezalar.Tarih.Value;                        //
                        dtCezaTarih.MinDate = itemCezalar.Tarih.Value;                      //
                        dtCezaTarih.Name = itemCezalar.Id.ToString();                       //
                        Point locNmr = new Point(110, (5 * sayac1));                        //
                        dtCezaTarih.Location = locNmr;                                      //
                        panelCezalar.Controls.Add(dtCezaTarih);                             //
                        dtCezalar.Add(dtCezaTarih);                                         //
                        dtCezaTarih.ValueChanged += DTCezalar_Guncelle;                     //
                                                                                            //
                        Button btnSil = new Button();                                       //
                        btnSil.Size = new Size(70, 25);                                     //
                        Point locBut = new Point(320, (5 * sayac1));                        //
                        btnSil.Text = "Sil";                                                //
                        btnSil.Name = itemCezalar.Id.ToString();                            //
                        btnSil.Location = locBut;                                           //
                        btnSil.Click += BtnDelete_Click;                                    //
                        panelCezalar.Controls.Add(btnSil);                                  //
                        sayac1 += 4;                                                        //
                    }                                                                       //
                }                                                                           //
            }                                                                               //
        }                                                                                   //
        sayac1 = 0;                                                                         //
        db.Dispose();                                                                       //
    }                                                                                       //
    catch (Exception)                                                                       //
    {                                                                                       //
                                                                                            //
    }                                                                                       //
}
                        
                        
                    
                



Method -> HatirlatmaMailiGonder

        
        

private void HatirlarmaMailiGonder()
{
    try
    {
        db = new Context.Context();
        var cezaList = db.cezalars.ToList();

        var ogrenciList = db.ogrencilers.ToList();
        foreach (var cezaItem in cezaList)
        {
            foreach (var ogrenciItem in ogrenciList)
            {
                if (cezaItem.OgrenciId == ogrenciItem.Id)
                {
                    if (cezaItem.MailGonder < 3)
                    {
                        var sinifim = db.siniflars.Find(ogrenciItem.SinifId);
                        string Template = EmailTemplate(ogrenciItem.AdiSoyadi, sinifim.Sinif, cezaItem.Tarih.Value);
                        string _aciklama = Template;
                        string _konu = "Tatlı Cezası Hk.";
                        string _ogrenciMaili = ogrenciItem.MailAdres;
                        EmailSender(_aciklama, _konu, _ogrenciMaili);
                        cezaItem.MailGonder += 1;
                        db.SaveChanges();
                    }
                }
            }
        }
        db.Dispose();
    }
    catch (Exception)
    {
    }
}
                                                    
                    
                



Method -> EmailTemplate

            
                
public string EmailTemplate(string ogrenci, string sinif, DateTime cezaTarihi)
{                                                                   //Html Kodlarin Basina '<' Karakterini Eklemelisiniz.
    string EmailFormat =    
     "div> +
        "span>h3>Ogrenci Tatlı Cezasi Bilgilendirme/h3>/span>br />" +               
           "table border=1 width=100% align=center cellpadding='3' border-color:'#dadce0'; border-radius:4px>" +
              "th>Ogrenci Adi/th>" +
              "th>Sinif/th>" +
              "th>Tatli Ceza Tarihi/th>" +
                  "tr>" +
                  "td>strong>" + ogrenci + "/strong>/td> " +
                  "td>strong>" + sinif + "/strong>/td>" +
                  "td>strong>" + cezaTarihi + "/strong>/td> " +
                  "/tr>" +
             "/table>" +
       "/div>";
    return EmailFormat;
}
                                        
            
        



Method -> EmailSender

        
        
public void EmailSender(string aciklama, string konu, string _MailAdresi)
{
    MailMessage ePosta = new MailMessage();
    ePosta.From = new MailAddress("**mail adresiniz**");            //Gönderilecek (Host) Mail Adresi
    ePosta.To.Add(_MailAdresi);                                     //Gönderilecek Kişinin Mail Adresi
    ePosta.Subject = konu;                                          //Mail Konusu
    ePosta.IsBodyHtml = true;                                       //EmailTemplate Bölümünde Html Kod Yazdığımız için 'True'
    ePosta.Body = aciklama;
    SmtpClient smtp = new SmtpClient();
    smtp.Credentials = new NetworkCredential("**Mail Adresiniz**", "**Şifreniz**");     //Gönderilecek(Host) Mail Adresi ve Şifresi
    smtp.Port = 587;                                                //Smtp Port
    smtp.Host = "smtp.gmail.com";                                   //Smtp Host
    smtp.EnableSsl = true;                                          //Smtp Sunucusu SSL Sertifikası İstiyorsa 'True'
    smtp.SendAsync(ePosta, (object)ePosta);
}
                                        
            
        



ListBox Sürükle Bırak (DragDrop)

        
        
private void lbOgrenciler_MouseDown(object sender, MouseEventArgs e)
{
    try
    {
        Point nokta = new Point(e.X, e.Y);
        sira = lbOgrenciler.IndexFromPoint(nokta);
        if (e.Button == MouseButtons.Left)
            lbOgrenciler.DoDragDrop(lbOgrenciler.Items[sira].ToString(), DragDropEffects.All);
    }
    catch (Exception)
    {
    }
}
private void lbSiniflar_DragOver(object sender, DragEventArgs e)
{
    if (e.KeyState == 1)
        e.Effect = DragDropEffects.Move;
}
private void lbSiniflar_DragDrop(object sender, DragEventArgs e)
{
    try
    {
        string gelen = e.Data.GetData(DataFormats.Text).ToString();
        var point = lbSiniflar.PointToClient(new Point(e.X, e.Y));
        int sira = lbSiniflar.IndexFromPoint(point);
        lbSiniflar.SelectedIndex = sira;
        string yeniSinif = lbSiniflar.Items[sira].ToString();
        db = new Context.Context();
        var _sinifId = db.siniflars.FirstOrDefault(x => x.Sinif == yeniSinif);
        Ogrenciler degisecekOgrenci = db.ogrencilers.FirstOrDefault(x => x.AdiSoyadi == gelen);
        degisecekOgrenci.SinifId = _sinifId.Id;
        db.SaveChanges();
        db.Dispose();
        SinifGoster();
        lbSiniflar.SelectedItem = _sinifId.Sinif;
        OgrenciGoster();
    }
    catch (Exception)
    {

    }

}
private void lbSiniflar_DragEnter(object sender, DragEventArgs e)
{
    if (e.KeyState == 1)
        e.Effect = DragDropEffects.Move;
    string nereye = e.Data.GetData(DataFormats.Text).ToString();

}
                                                
                    
                



Class -> Cezalar

        
        
public class Cezalar
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    public int OgrenciId { get; set; }
    public int CezaAdet { get; set; }
    public DateTime? Tarih { get; set; }
    public int? MailGonder { get; set; }
    public DateTime? MailGonderimTarihi { get; set; }
}
                                                
                    
                

Class -> Ogrenciler

        
        
public class Ogrenciler
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    public int SinifId { get; set; }
    public string AdiSoyadi { get; set; }
    public short Ceza { get; set; }
    public string MailAdres { get; set; }
}
                                                
                    
                


Class -> Siniflar

        
        
public class Siniflar
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    public string Sinif { get; set; }
    public string SinifSaat { get; set; }
    public virtual List ogrencilers { get; set; }     //List Kisminda '<' Icerisindeki '//' Kaldirilacak
}