2013-03-07 76 views
1

嗨。我有一个Windows窗体应用程序。在我做了什么之后,我想要的是将更新放入Listview。更像是一个日志文件。这里是我的代码:Listview作为日志文件

private void Form1_Load(object sender, EventArgs e) 
{ 
    listView1.View = View.Details; 
    listView1.GridLines = true; 
    listView1.FullRowSelect = true; 

    //Add column header 
    listView1.Columns.Add("Import Status", 100); 
    listView1.Columns.Add("Price", 70); 
    listView1.Columns.Add("Date", 70); 

    //Add items in the listview 
    string[] arr = new string[4]; 
    ListViewItem itm; 

    //Add first item 
    arr[0] = "product_1"; 
    arr[1] = "100"; 
    arr[2] = "10"; 
    itm = new ListViewItem(arr); 
    listView1.Items.Add(itm); 

    //Add second item 
    arr[0] = "product_2"; 
    arr[1] = "200"; 
    arr[2] = "20"; 
    itm = new ListViewItem(arr); 
    listView1.Items.Add(itm); 
} 

我如何将项目添加到ListView没有“硬编码”呢?有什么建议么?我该怎么做,每Button.Click,它可以添加行中的一些数据呢?

+0

你可以从数据库中获取数据..? – 2013-03-07 06:43:44

+0

不,它不涉及任何数据库。 – user1954418 2013-03-07 06:44:28

+0

好的 - 也许是一个XML文件?数据不会“只显示” - 您要添加的数据是什么? – 2013-03-07 06:45:44

回答

2
How can I Add items to the ListView without 'hardcoding' them? 

代码

private void Form1_Load(object sender, EventArgs e) 
    { 
     listView1.View = View.Details; 
     listView1.GridLines = true; 
     listView1.FullRowSelect = true; 
     listView1.Columns.Add("Import Status"); 
     listView1.Columns.Add("Price"); 
     listView1.Columns.Add("Date");  
    } 

    private void btnAdd_Click(object sender, EventArgs e) 
    { 
     ListViewItem LVI = new ListViewItem(txtstatus.Text); 
     LVI.SubItems.Add(txtPrice.Text); 
     LVI.SubItems.Add(txtDate.Text); 
     listView1.Items.Add(LVI); 
    } 

UI

enter image description here

+0

谢谢!生病试试这个! – user1954418 2013-03-07 07:47:22

+0

行可以保留吗?因为关闭程序后,行不见了 – user1954418 2013-03-07 08:23:58

+0

如果您想要持久数据,只需在应用程序关闭前存储数据(文件,数据库),然后在Form_Load上检索它。 – 2013-03-07 11:03:55

1

全球化的这两条线,让您的类的每一个方法,您的访问:

string[] arr = new string[4]; 
ListViewItem itm; 

现在创建一个button click事件,并把你的代码吧:

private void button1_Click(object sender, EventArgs e) 
     { 
      arr[0] = "product_2"; //you can get these values from textboxes if you are taking input from user 
      arr[1] = "200"; 
      arr[2] = "20"; 
      itm = new ListViewItem(arr); 
      listView1.Items.Add(itm); 
     } 
1

您好:)你可以使用datagridview而不是listview控件。

您只需要定义自己的数据集或将数据集控件 添加到您的项目。你只需要将你的三列添加到那里的新数据表中。 则:

  • 该数据集添加到您的形式,它会出现在你的表单代码
  • 在DataGridView的数据源设置为添加数据集

现在你可以添加新的数据行到datatable,它们将自动出现在datagridview中。好的是,您必须定义一次表格布局,设计者将生成一个自定义数据类型,您可以使用哪种类型。

我的经验告诉我,这种方式比使用listview更舒服。主要的是,如果你想处理来自其他 上下文的数据,你可以通过数据表LINQ。我以前使用的ListView,但由于datagridview的与数据集,一切都更好地结合起来;)

诚恳, ceth

+0

我可以使用数据网格视图而无需连接到SQL? – user1954418 2013-03-07 07:09:42

+0

当然你可以:)在datagridview中作为数据源的数据集/数据视图只是存储器中的虚拟数据库,可以像数据表中的实际数据库或数据行集合一样进行处理 – ceth 2013-03-07 08:11:50

+0

行可以保留吗?因为在关闭程序之后,行已经不存在了 – user1954418 2013-03-07 08:27:49