创建要在列表框中使用的动态字符串数组

时间:2015-08-18 03:31:48

标签: c# wpf datagrid listbox

我有一个数据网格,它在用户编辑我的应用程序时的行数方面是可变的。我需要创建一个列表框,列出包含变量datagrid的一列的字符串,无论长度如何。

我在执行此操作时遇到了麻烦,需要一种简单的方法将列内容转换为字符串数组。然后使用该数组动态填充列表框。

最近有人成功完成了这项工作吗?

Visual Studio 2010 C#

3 个答案:

答案 0 :(得分:0)

您是否有理由使用数组而不是列表?

你唯一的选择就像下面的

string x[];
for(int I=0; I < rows.count; I++) {
    x.push(rows[I].column["ColumnA"].toString());
}

基本上你声明一个空数组,然后每次需要使用Push方法时将其增加1.

答案 1 :(得分:0)

使用字符串列表代替使用数组:

public IEnumerable<Microsoft.Windows.Controls.DataGridRow> GetDataGridRows(Microsoft.Windows.Controls.DataGrid grid)
{
    var itemsSource = grid.ItemsSource as IEnumerable;
    if (null == itemsSource) yield return null;
    foreach (var item in itemsSource)
    {
        var row = grid.ItemContainerGenerator.ContainerFromItem(item) as Microsoft.Windows.Controls.DataGridRow;
        if (null != row) yield return row;
    }
}

var rows= GetDataGridRows(grid); 

foreach (DataGridRow r in rows)  
{  
    DataRowView rv = (DataRowView)r.Item;
    foreach (DataGridColumn column in grid.Columns)
    {

    }
 } 

答案 2 :(得分:0)

试试这个,希望它能正常工作:

 DataTable dt=new DataTable();
        dt.Columns.Add("Name");
        dt.Columns.Add("ph_NO");
        dt.Rows.Add(new object[] { "sonu", 213123 });
        dt.Rows.Add(new object[] { "abhay", 123411});
        dt.Rows.Add(new object[] { "John", 234123 });
        dataGridView1.DataSource = dt;            
       listBox1.DataBindings.Add(new Binding("DataSource", dataGridView1,"DataSource"));
       listBox1.DisplayMember = "Name";