C# Multi Textbox Satırlarını Ayrı Ayrı Değerlendirme

Visual Studio windows form uygulamasında, forma textBox ekleyip multiline olarak ayarlarsak textbox içeriğine birden fazla satır girilebilmektedir. Kullanım alanına göre her bir ayrı satırı farklı değerlendirmek isteyebiliriz. Mesela Matlab ya da EES (Engineering Equation Solver) gibi bir program yapmak istediğimizi varsayalım. Oluşturduğumuz multi textbox bizim kodlarımızı gireceğimiz alan olsun. Her satırda da değişkenlere tanımladığımız formüller olsun. Varsayımlarımızı görsele çevirecek olursak şöyle görünecektir:

 
x = 1 + 2 
y = 3 + x 
z = x * y 

Bu satırların textBox1 içinde olduğunu düşünelim ve işlemlerimize başlayalım. Öncelikle kaç satır olduğunu bir int değişkenine aktaralım:

 int satir_toplami = textBox1.Lines.Count();

Sonrasında for döngüsü ile her satıra tek tek uğrayalım:

 
int satir_toplami = textBox1.Lines.Count(); 
for (int i = 0; i <= satir_toplami - 1; i++)
{
    Console.WriteLine(textBox1.Lines[i]);
}

Şuanda her satırı sırasıyla birinci satırdan başlayarak ayrı ayrı çekebiliyoruz. Buradan sonrası kullanım alanınıza kalmış. Dilerseniz örnek bir uygulamaya yapalım:

 
int satir_toplami = textBox1.Lines.Count(); 
for (int i = 0; i <= satir_toplami - 1; i++)
{
    if (textBox1.Lines[it].Contains("=") == true)
    {
        dataGridView1.Columns.Add("Column", textBox1.Lines[it].GetUntilOrEmpty());
    }
}

Oluşturmuş olduğumuz GetUntilOrEmpty fonksiyonu ile “=” karakterinden önceki karakterleri alıyoruz ve datagridview tablosuna sütun olarak ekliyoruz. Bir sonraki adımında da seçilen satırdan Replace kodu ile değişkeni ve “=” karakterini temizleyip geri kalan metni de o değişkene atanan denklem olarak kabul edip çözümleri yaptırıp tabloya satırları ekleyebiliriz.

Belirli bir karakterden öncesini almaya yarayan GetUntilOrEmpty fonksiyonuna ulaşmak isterseniz:

static class Helper
{
   public static string GetUntilOrEmpty(this string text, string stopAt = "=")
   {
   if (!String.IsNullOrWhiteSpace(text))
      {
         int charLocation = text.IndexOf(stopAt, StringComparison.Ordinal);
         if (charLocation > 0)
           {
              return text.Substring(0, charLocation);
           }
      }
   return String.Empty;
   }
}

Leave a Reply

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir