C#数据网格视图

时间:2011-10-14 22:42:23

标签: c# winforms datagridview

我有以下代码,我正在ping一个指定次数的网址,每次都将ping时间添加到名为resultsList的数组中。

然后我想将resultsList设置为我的数据网格视图的数据源。

使用ping值填充resultsList。

然而,它只是用2来填充我的数据网格视图。

有什么想法吗?

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;
        }
    }
}

非常感谢, Ĵ

2 个答案:

答案 0 :(得分:2)

您绑定到每个字符串的长度。 您可以使用DataTable而不是列表:

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

还有其他方法,但我认为这是最简单的,你可以命名列,你可以在需要时添加其他东西。

答案 1 :(得分:2)

如果您使用的是.NET Framework 3.5或4.0,则可以向system.Linq添加using子句并执行以下操作:

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;