我有以下代码,我正在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;
}
}
}
非常感谢, Ĵ
答案 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;