ListBox中的项目在文本框中可以有不同的值吗?

时间:2017-11-19 10:36:33

标签: c#

我有这个ListBox,它显示我从DataGridView拖动的项目。 ListBox中的项目显示其MenuCode。我想要发生的是我想在TextBox上显示ListBox上每个项目的MenuPrice。我尝试这样做,但{Text}上显示MenuCode。请看下面的图片。

enter image description here

是否可以在该TextBox上显示MenuPrice?我已经完成了这段代码,但我认为这不对。

private void menuDataGrid_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e) //this code triggers when I dragged an item from datagridview to listbox.
{
    menuDataGrid.DoDragDrop(menuDataGrid.CurrentRow.Cells[3].Value.ToString(), DragDropEffects.Copy);
}

private void menuListBox_SelectedValueChanged(object sender, EventArgs e) //this is the code when I select an item on the listview, then appears at the textbox
{        
    pricetxtbox.Text = menuListBox.SelectedItem.ToString();
}

private void ShowDataToGrid()  //datagrid code
{
    db_connection();

    MySqlDataAdapter datagrid = new MySqlDataAdapter();
    string selectAll = "SELECT * FROM Menu";
    datagrid.SelectCommand = new MySqlCommand(selectAll, connect);

    DataTable tbl = new DataTable();
    datagrid.Fill(tbl);

    BindingSource bs = new BindingSource();
    bs.DataSource = tbl;

    menuDataGrid.DataSource = bs;
    menuDataGrid.Columns[6].Visible = false;
    menuDataGrid.Columns[7].Visible = false;
}

2 个答案:

答案 0 :(得分:1)

您应该将数据打包到具有要显示和保留的属性的对象类中。例如:

public class MenuItem()
{
    public float MenuPrice { get; set; }
    public string MenuCode { get; set; }
}

如果您在ListView中存储MenuItem类型的数据,您将能够:

private void menuListBox_SelectedValueChanged(object sender, EventArgs e) textbox
{        
    var item = menu.ListBoxItem.SelectedItem as MenuItem;
    if(item == null) return;

    pricetxtbox.Text = item.MenuPrice;
}

这是一种方法,如果你想增强你的代码,你应该考虑为你的文本框使用数据绑定。

答案 1 :(得分:1)

我将假设MenuPrice也存在于不同单元格的GridView上,例如Cells[4]

然后你可以做这样的事情

private void menuListBox_SelectedValueChanged(object sender, EventArgs e) //this is the code when I select an item on the listview, then appears at the textbox
{        
    foreach (DataGridViewRow row in menuDataGrid.Rows)
    {
        if (row.Cells[3].Value.ToString().Equals(menuListBox.SelectedItem.ToString()))
        {
            pricetxtbox.Text = row.Cells[4].Value.ToString();
            break;
        }
    }
}