如何将组合框的选定索引添加到列表视图中的列

时间:2014-08-08 15:53:48

标签: c# winforms listview combobox

我发现了这种变化,但没有解决问题的方法。所以这就是:

我正在使用Winforms。我有一个组合框和一个包含3列的列表视图。用户可以从组合框中选择现有值,也可以通过文本框和按钮添加自己的值。一切正常。

这是我遇到问题的地方: 我希望用户能够从组合框中选择一个值,在这种情况下是一个类别,并在“类别”列下的列表视图中显示。

我正在自学C#,这是第2天所以请耐心等待。

我的列表视图代码:

    private void Form1_Load(object sender, EventArgs e)
    {
        //Calls the function that adds properties to the listview
        PopulateListView();
        btnEditDesiredEnd.BackColor = Color.LightGray;
        btnDeposit.BackColor = Color.LightGray;

    }

    public void PopulateListView()
    {
        //Listview Properties:
        //Listview Details 
        lstView.View = View.Details;
        //Allow user to edit labels
        lstView.LabelEdit = true;
        //Allow user to change column order
        lstView.AllowColumnReorder = true;
        //Display checkboxes
        //lstView.CheckBoxes = true;
        //Display gridlines
        lstView.GridLines = true;
        //Allows user to select entire row
        lstView.FullRowSelect = true;


        //Create columns, width of -2 indicates auto-size
        lstView.Columns.Add("Transaction", 70, HorizontalAlignment.Center);
        lstView.Columns.Add("Category", 130, HorizontalAlignment.Center);
        lstView.Columns.Add("Description", -2, HorizontalAlignment.Left);

        //Add listview as a control
        this.Controls.Add(lstView);
    }

以下是应该将所有用户输入添加到列表视图的按钮。唯一不起作用的是最后一行。

它给我以下错误:无法分配'添加',因为它是'方法组'

private void btnDeposit_Click(object sender, EventArgs e)
    {
        lstView.View = View.Details;

        ListViewItem lvwItem = lstView.Items.Add(txtDeposit.Text);
        lvwItem.SubItems.Add(txtWithdraw.Text);
        lvwItem.SubItems.Add(txtDescription.Text);

        txtDeposit.Clear();
        txtWithdraw.Clear();
        txtDescription.Clear();

        btnDeposit.Enabled = false;
        btnDeposit.BackColor = Color.LightGray;

        lstView.Items.Add = cboCategory.SelectedIndex;

    }

编辑:这是工作代码..(cboCategory是组合框)

private void btnDeposit_Click(object sender, EventArgs e)
    {
        lstView.View = View.Details;
        ListViewItem lvwItem = lstView.Items.Add(txtDeposit.Text);
        if (cboCategory.SelectedItem != null)
        {
            lvwItem.SubItems.Add(cboCategory.SelectedItem.ToString());
        }
        lvwItem.SubItems.Add(txtDescription.Text);

2 个答案:

答案 0 :(得分:1)

.Add是一种方法,因此需要像方法一样调用它。

lstView.Items.Add("Adding this string to the list view");

但是我不知道cboCategory是什么,所以我不能告诉你想要添加什么。

答案 1 :(得分:0)

正如Sriram所述,这一行是完全错误的,实际上我们也不知道你的cboCategory是什么。

lstView.Items.Add = cboCategory.SelectedIndex;

当然你不应该这样做:

lstView.Items.Add(lvwItem);

和/或......

var selectedValue = lstView.Items.FirstOrDefault( c=>whateversearchparameters here);
if( selectedValue!=null )
      SelectAndStuffHere();

在不知道更多的情况下很难分辨:)

但希望它有所帮助,

干杯

了Stian