ListView değerleri toplama

Listelemek için en çok kullandığımız ListView kontrolünde listelediğimiz, örneğin; ürün, fiyat listesi vs. ıvırzırvırın toplam fiyatını hesaplamak isteyebiliriz. Bunu nasıl yaparız, tam olarak neyi ima ettiğimi anlamak için resimdeki gibi form ekranına 2 textbox, 2 buton, bir kaç label ve bir adet ListView sürükleyin.

Örneklemek için ListView’e birkaç ürün ve fiyat bilgisi girmek üzere textboxları kullandım. Ekle butonuna çift tıklayıp Textbox’dan ListView’e değer girmek için;

1
2
3
4
            ListViewItem lv = new ListViewItem();
            lv.Text = txtadi.Text;
            lv.SubItems.Add(txtfiyat.Text);
            listView1.Items.Add(lv);

ListView’e ürün ve fiyat bilgisini ekletmeyi başardıktan sonra topla butonu ile buradaki ürünlerin toplam fiyatını bulalım;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
double toplam = 0;

            double[] topla = new double[listView1.Items.Count]; // sonuç ondalıklı değer çıkabilir, işimizi sağlama alabilmek için double kullandık

            for (int i = 0; i < listView1.Items.Count; i++) //Listviewdeki tüm değerleri alabilmek için for kullandık
            {

                topla[i] = Convert.ToDouble(listView1.Items[i].SubItems[1].Text.ToString());// burada dikkat edilmesi gereken, SubItems değeri 2 kolon olduğu için 0. kolon ürünün adı 1. kolon ise fiyatı göstermekte

                toplam = toplam + topla[i];

            }

            lblsonuc.Text = Convert.ToString(toplam);

Gerekli açıklamayı kod içinde bulabilirsiniz. Topla dediğimizde sonucu label’ a yazdırdık. Cemal hocamın tavsiyesi üzerine foreach kullanarak da toplama işlemi gerçekleştirilebilir.

Combobox seçilene göre işlem yapma

Combobox’daki itemlara göre işlem yaptırabilir. En bilindik örneği hatırlarsak, web sitesini arka plan rengini kullanıcıya combobox’daki değerler sayesinde seçtirebiliriz.

Şimdi daha farklı bir örnek ile işlem yaptıralım. İçinde katı, sıvı, adet ürün isimleri bulunup, seçilen değere göre katı ürün ise label da gram yazdırıp, sıvı ürün ise mililitre veya adet üründe adet yazısını gösterebiliriz. Bunu yapabilmek için forma resimdeki gibi bir Combobox, Label ekliyoruz. Eklediğimiz Combobox’ın üzerine tıkladığımızda item eklemek için minik ok işreti göreceksiniz, buna tıklayıp Edit Items… dan değerleri girin(katı ürün, sıvı ürün vs.) ve ardından üzerine çift tıklayarak SelectedIndexChanged olayına gelelim. Bundan sonraki kısım görüldüğü üzere;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
string turusec = comboBox1.SelectedItem.ToString();

           
            switch (turusec)
            {
                case "Katı Ürün":
                    label1.Text = "Gram";
                    break;
                case "Sıvı Ürün":
                    label1.Text = "Mililitre";
                    break;
                case "Adet Ürün":
                    label1.Text = "Adet";
                    break;
               
            }

Combobox seçili değerini turusec isminde string değişkenine atayıp, Switch-Case ile seçili değere göre label1.Text’ine ekrana yazdırılacak değeri girip işlem yaptırıyoruz.

Visual Studio kod satırlarını numaralandırma

Visual Studio 2010’da veya diğer sürümlerde kod kısmını daha rahat kullanabilmek, olası hataları daha çabuk bulabilmek amacıyla sol tarafta kod satır numaraları bulunmaktadır. Visual Studio kurduğumuzda default olarak bu numaralandırma gelmez. Kod ekranına bunu sağlamak için üst menüden Tools – Options – Text Editor – All Languages seçeneklerine sırasıyla gelerek resimdeki gibi Line Numbers kutusunu işaretliyoruz. Ardından Ok ‘a basıp hayatımıza kaldığımız yerden devam ediyoruz…

Listboxlar arası sürükle bırak

Basit bir uygulama ile merhaba. Bu uygulama 2 adet listbox arasında mouse yardımı ile karakter taşımamızı sağlamakta. Öncelikle forma iki adet listbox ekleyelim. Listboxların Properties ‘dan Behavior kategorisi altında bulunan AllowDrop özelliğini true yapın.

Bunları yaptıktan sonra kodlamaya dalabiliriz. Koda dalmadan önce dikkatinizi çekecek olan listbox olayları olmalı. İlk olarak listBox1’in(karakter taşınacak olan listbox ) Events yani olaylarına gelerek MouseDown‘a çift tıklayın. Kodlamadaki gibi devam edin… Ardından Listbox2’nin(karakterin geleceği yer) DragEnter ve DragDrop olaylarına çift tıklayarak alttaki kodlamaları yapın.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  private void listBox1_MouseDown(object sender, MouseEventArgs e)
        {
            listBox1.DoDragDrop(listBox1.SelectedItem, DragDropEffects.Move);
        }

        private void listBox2_DragEnter(object sender, DragEventArgs e)
        {
            e.Effect = DragDropEffects.Move;
        }

        private void listBox2_DragDrop(object sender, DragEventArgs e)
        {
            listBox2.Items.Add(e.Data.GetData(DataFormats.StringFormat));
            listBox1.Items.Remove(e.Data.GetData(DataFormats.StringFormat));
        }

Kaynak : Cemal Can AKGÜL (Bilge Adam Yazılım Eğitmeni)

Csharp da resimli ekran koruyucu

ekran koruyucu yapmak

ekran koruyucu yapmakBu yazıda Graphics sınıfını kullanarak basit resimli ekran koruyucu nasıl yapılır öğrenelim. Bu sınıfı C#’da daha çok görsellik katmak için kullanırız. Hem öğrenmek hemde biraz eğlencelik açısından ekran koruyucu nasıl yapılır öğrenelim.

Boş form açıp, Properties’den Resources.resx’e çift tıklayıp projemizde kullanacağımız güzel bir resim ekleyin. Resmin adı my_resim olsun(kodlamadaki resim yolunu bulabilmek için resmin ismini my_resim olarak ayarlayın). Ardından forma başka hiçbir şey eklemeden kod kısmına dalalım;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
private void Form1_Load(object sender, EventArgs e)
        {
            settings();
        }

        private void settings()
        {
            this.BackColor = Color.Azure; //form arka plan rengini Azure yaptık
            this.Width = SystemInformation.PrimaryMonitorSize.Width; //Genişlik ve yüksekliği o monitörün ayarlı olan çözünürlüğüne göre ayarlamak için değerleri aldık.
            this.Height = SystemInformation.PrimaryMonitorSize.Height;
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; //formun border yani başlık çubuğunun ve kenarlarının kaldırılmasını sağladık
            this.WindowState = FormWindowState.Maximized; //formun tamamını gösterdik
            this.Location = new Point(0, 0); //formun bulunduğu alan
            this.TopMost = true; //Formun tüm pencerelerin üzerinde gözükmesini true yapıyoruz

            Timer tmr = new Timer(); //timer oluşturduk
            tmr.Interval = 50;
            tmr.Tick += new EventHandler(tmr_Tick);
            tmr.Enabled = true;
            this.DoubleClick += new EventHandler(Form1_DoubleClick); //forma çift tıklanınca Form1_DoubleClick metodunu çalıştır

        }

        void Form1_DoubleClick(object sender, EventArgs e)
        {
            Application.Exit(); //uygulamadan çık
        }
        Random rnd = new Random(); //* işaretinin rastgele çıkabilmesi için random değer tanımladık
        void tmr_Tick(object sender, EventArgs e)
        {
            Graphics gr = this.CreateGraphics(); //Graphics sınıfını oluşturduk
            Image img = Properties.Resources.my_resim; //projemizde kullanacağımız resim ve resim yolu
            Bitmap bm = new Bitmap(img, this.Width, this.Height); //img'ı yani resimi formun genişlik ve yüksekliğine göre ayarladık
            Image img2 = bm as Image; //bm'nin resim gibi davranmasını istedik


            TextureBrush firca = new TextureBrush(img2, System.Drawing.Drawing2D.WrapMode.Tile);
            gr.DrawString(("*"),new Font("Arial", rnd.Next(1,200)), firca, rnd.Next(-50, this.Width +50), rnd.Next(-50, this.Height +50));
        }
    }

Eklemeyi unutmayın!

1
using System.Drawing;

Genel olarak; ilk önce metot yardımı ile form ekranın ayarlarını yaptık. Ekran çözünürlüğüne göre genişlik ve yükseklik değerlerini aktardık. Üzerindeki şekillerin silinmesi ile ortaya çıkacak olan resmin; gözle görülür bir şekilde olması için Timer ekledik. Açılan forma çift tıklayarak da formdan çıkılmasını istedik. Oluşturulan Timer’a ekran koruyucumuz için ayarlamaları yaptık. Ayrıntılı açıklamayı kodlar içinde de bulabilirsiniz. Resimli ekran koruyucusunun hikayesi buydu.

Programı yaptıkdan sonra .exe uzantılı çalıştırılabilir dosyasının uzantısını .scr olarak değiştirin, ardından C:\WINDOWS klasörünün içine yapıştırın. Bundan sonra masaüstünden sağ tuş tıklayıp özelliklerden girerek kendi ekran koruyucunuzu kullanabilir siniz.

Kaynak : Cemal Can AKGÜL (Bilge Adam Yazılım Eğitmeni)

Aöf vize final not hesaplayıcı

Anadolu Üniversitesi Açık Öğretim Fakülte öğrencisini daha çok ilgilendiren bir program ile merhaba. Hali hazırda Aöf Vize-Final not hesaplama programını buradan indirebilirsiniz.

Aöf vize-final not sistemi; 100 üzerinden alınan puanın, vizenin %30’u ile finalin %70′ nin toplamı 50 puanı geçmek koşulu ile dersden geçilebilmekte. Bundan dolayı uygulamamız vize notu olarak girilen değeri %30’unu alarak finalden alman gereken minimum not ve doğru cevaplanması gereken soru miktarını vermekte.

Kullanıcı tarafını atlattıktan sonra yazılımcı tarafından devam edelim. Bu mini not hesaplama uygulamasını C sharp ile yapabilmek için bir adet textbox, 3 adet buton, tasarımı biraz görselleştirmek için ise 2-3 adet timer. Form tasarımını resimdeki veya uygulamayı indirerek benzerini yaptıktan sonra kod kısmına geçebiliriz;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
  private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Start();
            dogru.Enabled = false;
            puan.Enabled = false;

        }
       
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                double vize;
                vize = Convert.ToDouble(textBox1.Text);
                double sonuc;
                double soru;
                if (vize <= 100)
                {
                   
                    sonuc = Math.Floor((50 - vize * 0.3) / 0.7);  // sonucu yuvarlamak için math.floor ve math celling fonksiyonunu kullandık
                    soru = Math.Ceiling(sonuc / 3.3);
                    label2.Text = sonuc.ToString();

                    label3.Text = soru.ToString();

                    dogru.Enabled = true;
                    puan.Enabled = true;
                }
                else
                {

                    MessageBox.Show("Hata!!! Lütfen Geçerli Bir Not Giriniz...");
                    textBox1.Clear();

                   
                    label2.Text = "--";
                    label3.Text = "--";
                    dogru.Enabled = false;
                    puan.Enabled = false;
                }
            }

            catch
            {
                MessageBox.Show("Hata!!!     \n\nLütfen Notunuzu Rakamsal Değer ile Girin\n\nÖrnek: " 65 " gibi... ");
                textBox1.Clear();
            }

           
        }

        private void button2_Click(object sender, EventArgs e)
        {

            timer2.Enabled = true;

            textBox1.Clear();
            label2.Text = "--";
            label3.Text = "--";
            dogru.Enabled = false;
            puan.Enabled = false;
        }

             

        private void button3_Click(object sender, EventArgs e)
        {
            Application.Exit();  //programdan çık
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            Opacity += 0.10;
            this.Opacity = Opacity;
            if (Opacity > 1.0)
            {

                timer1.Enabled = false;

            }
        }
       
           
        private void timer2_Tick(object sender, EventArgs e)
        {
            if (timer2.Interval<101)
            {
                timer2.Interval+=20;


                int c = 0;
                Random r = new Random();
                Point l = this.Location;

                while (c < 50)
                {
                    int sag = r.Next(1, 5);
                    int sol = r.Next(1, 5);

                    this.Location = new Point(l.X + sag, l.Y + sol);

                    c++;
                }
                this.Location = l;
            }

   
                    else
                    {
                        timer2.Enabled = false;  // timer2 durdu
                        timer2.Interval = 10;
                    }




        }

Burada Math.Floor ve fonksiyonları ile alınan notu daha doğru yazdırabilmek için çıkan sonucu yuvarladık. Uygulama sonuç olarak button1_Click içerisinde yapılan kodlamalardan ibaret. Diğerleri opsiyonel olarak yapılmış görsel özellikleri.(formun yavaş yavaş açılması, form titremesi, temizleme vs.)