我有这个ListBox,它显示我从DataGridView拖动的项目。 ListBox中的项目显示其MenuCode
。我想要发生的是我想在TextBox上显示ListBox上每个项目的MenuPrice
。我尝试这样做,但{Text}上显示MenuCode
。请看下面的图片。
是否可以在该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;
}
答案 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;
}
}
}