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

Saldon

Decapat
Katılım
22 Aralık 2018
Mesajlar
85
Çözümler
1
Ö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);
                    }
 
KS
Saldon

Saldon

Decapat
Katılım
22 Aralık 2018
Mesajlar
85
Çözümler
1

M.Sc Jelly Bean

Megapat
Katılım
2 Mart 2014
Mesajlar
5.595
Çözümler
93
Yer
Master Boot Record
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('*', ' '));
 
KS
Saldon

Saldon

Decapat
Katılım
22 Aralık 2018
Mesajlar
85
Çözümler
1
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:

M.Sc Jelly Bean

Megapat
Katılım
2 Mart 2014
Mesajlar
5.595
Çözümler
93
Yer
Master Boot Record
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.
 

sSLH

Centipat
Katılım
7 Mayıs 2020
Mesajlar
304
Çözümler
6
Yer
Mersin
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?
 
Yukarı