【发布时间】:2013-11-10 14:20:41
【问题描述】:
我正在尝试制作一个“历史页面”。读取用户作为字符串的 url 并将其添加到 List 并将其转换为 DataTable 但是当我单击显示历史菜单选项时,我得到的只是列“urls”和它下面的一个空单元格。我假设我也可能不恰当地使用了 Add 方法。
主窗体类:
private void showHistoryToolStripMenuItem_Click(object sender, EventArgs e)
{
using (History history = new History())
{
history.ShowDialog();
nonHomepage = URLInput.Text;
if (String.IsNullOrEmpty(nonHomepage))
{
return;
}
else
{
addToList(nonHomepage);
}
}
}
public void addToList(string URLvalue)
{
listH.Add(URLvalue);
}
public List<string> getList()
{
return listH;
}
历史表单类:
private void History_Load(object sender, EventArgs e)
{
Form1 br = new Form1();
list = br.listH;
DataTable table = ConvertListToDataTable(list);
dataGridView1.DataSource = table;
}
static DataTable ConvertListToDataTable(List<string> l)
{
DataTable table = new DataTable();
//int columns = 0;
table.Columns.Add("urls");
foreach(string s in l)
{
table.Rows.Add(s);
}
return table;
}
有什么建议吗?如果我将所有这些 url 放入文件中,然后从文件中读取并写入文本框/表格会怎样?或者也许我应该改变数据结构?例如,去查字典?提前致谢。
【问题讨论】:
-
我猜你还没有调试过这段代码。因为我认为问题在于您在表单之间传递列表时。更具体地说,这个位:Form1 br = new Form1(); list = br.listH;... 如果您重新实例化该类,它的所有变量都将设置为其默认值(并且列表为空)。
-
是的,它可以编译。我是否应该将主表单中的 url 字符串传递给历史表单,然后在历史表单中列出?
-
你应该开始添加
Dataset.Extentions引用,这样你就可以直接在DataTable对象上使用linq并转换成一个列表
标签: c# winforms list datatable