C # Data Grid View - PullRequest
       11

C # Data Grid View

1 голос
/ 15 октября 2011

У меня есть приведенный ниже код, я пингую веб-адрес указанное количество раз, каждый раз добавляя время пинга в массив с именем resultsList.

Затем я хочу установить resultsList в качестве источника данных.для моего Data Grid View.

ResultsList заполняется значениями ping.

Однако он просто заполняет мой Data Grid View двумя.

Есть идеи?

using System;
using System.Collections.Generic;
using System.Net;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.NetworkInformation;

namespace Ping_Application
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void pingButton_Click(object sender, EventArgs e)
        {
            List<string> resultsList = new List<string>();
            for (int indexVariable = 1; indexVariable <= timesToPing.Value; indexVariable++)
            {
                string stat = "";
                Ping pinger = new Ping();
                PingReply reply = pinger.Send(pingAddressTextBox.Text);
                if (reply.Status.ToString() != "Success")
                    stat = "Failed";
                else
                    stat = reply.RoundtripTime.ToString();
                pinger.Dispose();
                resultsList.Add(stat);
            }
            resultsGrid.DataSource = resultsList;
        }
    }
}

Большое спасибо, J

Ответы [ 2 ]

2 голосов
/ 15 октября 2011

Если вы используете .NET Framework 3.5 или 4.0, вы можете добавить предложение using в system.Linq и сделать следующее:

resultsGrid.DataSource = resultsList.Select(x => new { Value = x }).ToList();

Или вы можете использовать класс-оболочку для строк:

public class StringWrapper
{
    public StringWrapper(string s)
    {
        Value = s;
    }
    public string Value { get { return _value; } set { _value = value; } }
    string _value;
}

Затем вы объявляете свою переменную так:

List<StringWrapper> resultsList = new List<StringWrapper>();

И вы добавляете такие вещи, как это:

resultsList.Add(new StringWrapper(stat));

Затем вы можете связать данные, и вот вам:

resultsGrid.DataSource = resultsList;
2 голосов
/ 15 октября 2011

Вы привязываетесь к длине каждой строки. Вы можете использовать DataTable вместо списка:

DataTable resultsList = new DataTable();
resultsList.Columns.Add("Time", typeof(String));
...
resultsList.Rows.Add(stat);

Есть и другие способы, но я думаю, что это самый простой способ, и вы можете назвать столбец и добавить другие вещи, когда вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...