C# DataGridView İşlemleri

RamonMotta

Kilopat
Katılım
2 Ağustos 2014
Mesajlar
256
Makaleler
1
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
Arkadaşlar merhaba, ben DataGridView'e .txt ile veriyi çekiyorum ancak şöyle iki sorunum var;

-
resim_2021-03-23_155721.png


".txt" dosyasının ilk satırını başlık gibi algılıyor ama o satır başlık değil bunu nasıl düzeltebilirim?
-Diğer sorum ise buradaki her bir sütunu dosyayı okuduktan sonra işleme koymak istiyorum bunu nasıl yapabilirim? Veri Çekildi>Sütunlar Halinde Geldi>Gelen Veri Tekrar İşleme koyulacak. Bunu nasıl yapabilirim?
@Evilmonster
 
C#:
namespace bitirme2
{
    class helper
    {
        public static string file;

        public static DataTable DataTableFromTextFile(string location, char delimiter = '\t')
        {
            DataTable result;
            location = file;

            string[] LineArray = File.ReadAllLines(location);
            result = FromDataTable(LineArray, delimiter);
            return result;

        }
        private static DataTable FromDataTable(string[] LineArray,char delimiter)
        {
            DataTable dt = new DataTable();
            AddColumnToTable(LineArray, delimiter, ref dt);
            AddRowToTable(LineArray, delimiter, ref dt);

            return dt;


        }

        private static void AddRowToTable(string[] valueCollaction, char delimiter, ref DataTable dt)
        {
            for (int i=0; i<valueCollaction.Length;i++)
            {
                string[] values = valueCollaction[i].Split(delimiter);
                DataRow dr = dt.NewRow();
                for (int j=0;j<values.Length;j++)
                {
                    dr[j] = values[j];
                }
                dt.Rows.Add(dr);
            }
        }

        private static void AddColumnToTable(string[] columnCollectio, char delimiter, ref DataTable dt)
        {
            string[] columns = columnCollectio[0].Split(delimiter);
            foreach (string columnName in columns)
            {
                DataColumn dc = new DataColumn(columnName, typeof(string));
                dt.Columns.Add(dc);

            }
        }
    }
}
DataGridView'e koordinatları nasıl ekliyorsunuz?
 
Column demek sütun demektir. Yani sizin 1. sorununuzdaki sorun bundan kaynaklanıyor. FromDataTable fonksiyonunda 2. satırı açıklama satırı yapın. Onun yerine
[CODE lang="csharp" title="C#"]dt.Columns.Add("X");
dt.Columns.Add("Y");
dt.Columns.Add("Z");[/CODE]
derseniz X, Y ve Z sütunlarını eklersiniz.

Her değer hakkında işlem yapmak için AddRowToTable fonksiyonundaki 1. for döngüsünü kullanabilirsiniz. Koordinatlar ilk başta satır satır geliyor ve 2. for döngüsünde X, Y ve Z olarak ayrılıyorlar. Yani i, satır numarası; j, koordinat numarası. j 0 olursa X, 1 olursa Y ve 2 olursa Z koordinatı demek oluyor.

Bu arada önceki sorunlarınızı neden bir çözüme kavuşturamadığımızı anladım, koordinatlar arasında boşluk değil TAB var. Bu da boşlukla bölmeye çalıştığımızda boşluk olmadığı için sorun çıkmasını çok güzel açıklıyor.
 
Column demek sütun demektir. Yani sizin 1. sorununuzdaki sorun bundan kaynaklanıyor. FromDataTable fonksiyonunda 2. satırı açıklama satırı yapın. Onun yerine
[CODE lang="csharp" title="C#"]dt.Columns.Add("X");
dt.Columns.Add("Y");
dt.Columns.Add("Z");[/CODE]
derseniz X, Y ve Z sütunlarını eklersiniz.

Her değer hakkında işlem yapmak için AddRowToTable fonksiyonundaki 1. for döngüsünü kullanabilirsiniz. Koordinatlar ilk başta satır satır geliyor ve 2. for döngüsünde X, Y ve Z olarak ayrılıyorlar. Yani i, satır numarası; j, koordinat numarası. j 0 olursa X, 1 olursa Y ve 2 olursa Z koordinatı demek oluyor.

Bu arada önceki sorunlarınızı neden bir çözüme kavuşturamadığımızı anladım, koordinatlar arasında boşluk değil TAB var. Bu da boşlukla bölmeye çalıştığımızda boşluk olmadığı için sorun çıkmasını çok güzel açıklıyor.
resim_2021-03-23_171245.png

X Y Z'nin altındaki ilk satırı yan tarafa yazıyor sebebi ne olabilir sizce?
 
Eki Görüntüle 936831
Buradaki AddColumnToTable fonksiyonunu açıklama satırı yaptınız mı? (Başına // koyun.)
Hallettim teşekkür ederim. Bir sorum daha olacaktı.

C#:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Drawing.Printing;

namespace bitirme2
{
    public partial class dyazma : Form
    {
        public dyazma()
        {
            InitializeComponent();
            
        }
        PrintDialog PRD = new PrintDialog();
        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {

            
            for (double i = Convert.ToDouble(textBox1.Text); i <= Convert.ToDouble(textBox2.Text); i+=0.001)
            for (double j = Convert.ToDouble(textBox3.Text); j <= Convert.ToDouble(textBox4.Text); j += 0.001)
            for (double k = Convert.ToDouble(textBox5.Text); k <= Convert.ToDouble(textBox6.Text); k += 0.001)

                    {

                        double wgs84a = 6378137.00, wgs84b = 6356752.31424518;
                        double A,B;
                A = (Math.PI / 180) * i;
                 B = (Math.PI / 180) * j;


                        double ke2;
                        ke2 = ((wgs84a * wgs84a) - (wgs84b * wgs84b)) / (wgs84a * wgs84a);

                        double N;
                        N = (wgs84a / (Math.Sqrt(1 - (ke2 * ((Math.Sin(A)) * (Math.Sin(A)))))));

                        double X, Y, Z;
                        X = (N + k) * (Math.Cos(A)) * (Math.Cos(B));
                        Y = (N + k) * (Math.Cos(A)) * (Math.Sin(B));
                        Z = (((1 - ke2) * N + k)) * (Math.Sin(B));
                        this.deneme1.Items.Add(X);
                        this.deneme2.Items.Add(Y);
                        this.deneme3.Items.Add(Z);
                      

                    }
        }

        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void button2_Click(object sender, EventArgs e)
        {
          
            
                SaveFileDialog save = new SaveFileDialog();
                save.Filter = "Metin Dosyası|*.txt";
                save.OverwritePrompt = true;
                save.CreatePrompt = true;

            if (save.ShowDialog() == DialogResult.OK)
            {
                StreamWriter Kayit = new StreamWriter(save.FileName);
                int count = deneme1.Items.Count;
                foreach (int value in Enumerable.Range(0, count))
                {
                    String x = deneme1.Items[value].ToString();
                    String y = deneme2.Items[value].ToString();
                    String z = deneme3.Items[value].ToString();
                    String line = String.Format("{0}\t{1}\t{2}", x, y, z);
                    Kayit.WriteLine(line);



                }



                Kayit.Close();
             }
            

        }

  

      
    }
}

Şu komuttan donma sorunu yaşıyorum sizce sebebi ne olabilir? 100-200 satır yazdırıyor ama daha fazlasını yazdırmıyor, program donuyor.
 
Çünkü i, j ve k sıkıntı çıkartıyor. Bu değişkenleri kullanacağınız yerde
Math.Round(değişken, 5) kullanmayı deneyin.

Hatırladığım kadarıyla benzer bir soruyu farklı bir konuda sormuştunuz.
 
Çünkü i, j ve k sıkıntı çıkartıyor. Bu değişkenleri kullanacağınız yerde
Math.Round(değişken, 5) kullanmayı deneyin.

Hatırladığım kadarıyla benzer bir soruyu farklı bir konuda sormuştunuz.
Aynen yazdırmayı halletmiştim ancak fazla satır olunca program donuyor
Nasıl değiştirebilirim peki bunu?
 

Yeni konular

Geri
Yukarı