C# DataGridView Stünun Başına Yıldız Nasıl Eklenir?

Saldon

Kilopat
Katılım
22 Aralık 2018
Mesajlar
146
Çözümler
3
Yer
Hatay
Daha fazla  
Sistem Özellikleri
Ekran çözünürlüğü: 2560x1440 @ 164Hz
Pencere boyutu: 2560x1307 @ 164Hz
VR: Not Active
Graphics API: Direct3D 11.0 (Level 11.1)
GPU: NVIDIA GeForce RTX 4060
VRAM: 7957MB
Max Texture Size: 16384px
Shader Level: 50
CPU: AMD Ryzen 9 5900X 12-Core Processor (24 thread)
RAM: 32,869 MB (32 GB)
İşletim Sistemi: Windows 11 (10.0.26100) 64bit (Desktop)
Cinsiyet
Erkek
Meslek
Oyun Yapımcısı
Öncelikle merhaba arkadaşlar datagridview de bulunan 1 stünuma rastagele sayı üretiyorum.
Fakat bu sayıyı üretirken başına yıldız(*) bunu koymak istiyorum nasıl yapabilirim.

Kod:
 //RASTGELE DEĞER
                    Random random = new Random();
                    int rndprice = 1;
                    rndprice = random.Next(textBox1, textBox2);

//TOPLAM DEĞER İÇİN 0 DEĞERİ
                    decimal sum = 0;
                    decimal total = Convert.ToInt32(totalTxt.Text);

                    //TOPLAM DEĞERİ EŞİTLEMEK İÇİN DÖNGÜ
                    for (int i = 0; i < dataGridView1.Rows.Count; ++i)
                    {
                        sum += Convert.ToInt32(dataGridView1.Rows[i].Cells[5].Value);
                    }
 
Veritabanına da aynı şekilde mi işlensin sayı yoksa, sadece formda gözükmesini mi sağlamak istiyorsun?
 
Diğer sayılardan ayırmak için.

Verdiğiniz koddan gördüğüm kadarıyla DataGridView içerisinde String olarak tutuyorsunuz.
C#:
dataGridView1.Rows[i].Cells[j].Value = "*" + dataGridView1.Rows[i].Cells[j].Value // i satırı, j sutünu
Şeklinde ekleyebilirsiniz. Ancak bunu yapmak size Convert.ToInt32() yani Parse işleminde zorluk çıkaracaktır. Yine gördüğüm kadarıyla Try-Catch kullanmıyorsunuz. Olası bir Typo'da program RunTimeError verecektir.
Daha sonrasında "*"lı sayı üzerinde işlem yapabilmek için Replace komutu ile temizlemek zorunda kalacaksınız.

C#:
string numberWithAsterisk = "*123";

int n1 = Convert.ToInt32(numberWithAsterisk); // RunTimeError!
int n2 = Convert.ToInt32(numberWithAsterisk.Replace('*', ' '));
 
Verdiğiniz koddan gördüğüm kadarıyla DataGridView içerisinde String olarak tutuyorsunuz.
C#:
dataGridView1.Rows[i].Cells[j].Value = "*" + dataGridView1.Rows[i].Cells[j].Value // i satırı, j sutünu
Şeklinde ekleyebilirsiniz. Ancak bunu yapmak size Convert.ToInt32() yani Parse işleminde zorluk çıkaracaktır. Yine gördüğüm kadarıyla Try-Catch kullanmıyorsunuz. Olası bir Typo'da program RunTimeError verecektir.
Daha sonrasında "*"lı sayı üzerinde işlem yapabilmek için Replace komutu ile temizlemek zorunda kalacaksınız.

C#:
string numberWithAsterisk = "*123";

int n1 = Convert.ToInt32(numberWithAsterisk); // RunTimeError!
int n2 = Convert.ToInt32(numberWithAsterisk.Replace('*', ' '));
Hata verdi hocam yapamadım şöyle yapalım ben bir button ile dataGridView1.Rows.Cells[5].Value stünun hepsine * eklesin sayıları silmeden.

Ama sol tarafına.


'Giriş dizesi doğru biçimde değildi.'


Kod:
int toplam = 0;
                        //TOPLAM DEĞER FOR DÖNGÜSÜ TEXTBOXA YAZDIRMAK İÇİN
                        for (int i = 0; i < dataGridView1.Rows.Count; ++i)
                        {
                            string numberWithAsterisk = "*123";

                            int n1 = Convert.ToInt32(numberWithAsterisk); // RunTimeError!
                            int n2 = Convert.ToInt32(numberWithAsterisk.Replace('*', ' '));
                            toplam += Convert.ToInt32(dataGridView1.Rows[i].Cells[5].Value = "*" + dataGridView1.Rows[i].Cells[5].Value);
                        }
                        textBox1.Text = toplam.ToString("C");
 
Son düzenleme:
Verdiğim örneği doğrudan yazarsanız tabi hata verir.
O, Convert.ToInt32() ile *'lı sayıları çeviremeyeceğini göstermek için bir örnekti.
Hatta yanında "RunTime Error" yazıyor bu yüzden.
C#:
for (int i = 0; i < dataGridView1.Rows.Count; ++i)
{
    toplam += Convert.ToInt32(dataGridView1.Rows[i].Cells[5].Value.Replace('*',' ').TrimStart());
    dataGridView1.Rows[i].Cells[5].Value = "*" + dataGridView1.Rows[i].Cells[5].Value; // Daha öncesinde başında * varsa ** olur.
    // Her detay için ayrı kontrol gerekir.
}

Veri yapıları konusunda büyük eksiğiniz mevcut. Özellikle de Integer ve String üzerine.
 
Tabloya üretirken sayıya yıldız eklemek yerine üretilen direk sayıyı textboxt içerisindeyken neden yapmıyorsun?

C#:
//RASTGELE DEĞER
                    Random random = new Random();
                    int rndprice = 1;
                    rndprice = random.Next(textBox1, textBox2);
string son="*"+rndprice.ToString();

Bu şekilde kullanım ile tabloya eklerken direkt olarak zaten string eklemende bir sorun teşkil eder mi?
 
Uyarı! Bu konu 6 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Geri
Yukarı