将列表框中的项添加到另一个表单的另一个列表框中
本文关键字:另一个 列表 表单 添加 | 更新日期: 2023-09-27 18:17:47
下面是我的代码。
private void PlaceOrder_Click(object sender, EventArgs e)
{
MenuBox.Items.Clear();
TotalBox.Items.Clear();
total.Clear();
ordertotal = 0;
}
我想将菜单框中的内容添加到另一个表单的另一个列表框中。
更新(由jp2code添加)
Form1(主要):
namespace WindowsFormsApplication1 {
public partial class RESTAURANT : Form
{
double soup = 2.49;
double ordertotal;
public RESTAURANT()
{
InitializeComponent();
}
private void RESTAURANT_Load(object sender, EventArgs e)
{
}
private void Add_Click(object sender, EventArgs e)
{
MenuBox.Items.Add("Soup");
TotalBox.Items.Add(String.Format("{0:C}", soup));
ordertotal += soup;
total.Text = Convert.ToString(String.Format("{0:C}", ordertotal));
}
private void TotalBox_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void PlaceOrder_Click(object sender, EventArgs e)
{
new AreYouSure().Show();
this.Show();
MenuBox.Items.Clear();
TotalBox.Items.Clear();
total.Clear();
ordertotal = 0;
}
}
}
Form2(确认)
namespace WindowsFormsApplication1 {
public partial class Confirmation : Form
{
public Confirmation()
{
InitializeComponent();
}
private void label1_Click(object sender, EventArgs e)
{
}
private void Confirmation_Load(object sender, EventArgs e)
{
}
private void MenuBox_SelectedIndexChanged(object sender, EventArgs e)
{
}
}
}
当点击"发送订单"按钮时,表单1中的"菜单框"中的项目需要发送到表单2中的"菜单框"
OtherForm.OtherListbox.Items.Clear();
foreach(var itm in MenuBox.Items)
OtherForm.OtherListbox.Items.Add(itm);
Form1 (Main):
namespace WindowsFormsApplication1 {
public partial class RESTAURANT : Form
{
double soup = 2.49;
double ordertotal;
public RESTAURANT()
{
InitializeComponent();
}
private void RESTAURANT_Load(object sender, EventArgs e)
{
}
private void Add_Click(object sender, EventArgs e)
{
MenuBox.Items.Add("Soup");
TotalBox.Items.Add(String.Format("{0:C}", soup));
ordertotal += soup;
total.Text = Convert.ToString(String.Format("{0:C}", ordertotal));
}
private void TotalBox_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void PlaceOrder_Click(object sender, EventArgs e)
{
new AreYouSure().Show();
this.Show();
MenuBox.Items.Clear();
TotalBox.Items.Clear();
total.Clear();
ordertotal = 0;
}
}
}
Form2(确认)
namespace WindowsFormsApplication1 {
public partial class Confirmation : Form
{
public Confirmation()
{
InitializeComponent();
}
private void label1_Click(object sender, EventArgs e)
{
}
private void Confirmation_Load(object sender, EventArgs e)
{
}
private void MenuBox_SelectedIndexChanged(object sender, EventArgs e)
{
}
}
}
当点击"发送订单"按钮时,表单1中的"菜单框"中的项目需要发送到表单2中的"菜单框"
最好将其他表单(在本例中为ListBox)的控件默认设置为Private
在这种情况下,您要么需要将控件的可见性设置为Public(在我看来是糟糕的形式),要么在另一个表单中创建一个方法来接受来自表单的参数。
考虑如下内容:
public void ListBoxData(object[] array)
{
listBox1.Clear();
listBox1.AddRange(array);
}
要将数据或选中的项信息返回到主表单,您同样需要创建另一个可以检查的公共对象,就像下面的属性:
public object SelectedItem { get { return listBox1.SelectedItem; } }
我希望这就是你要找的。
更新:
使用您在下面的帖子中提供的代码,我可以看到您的确认表单中没有任何可以发送数据的内容,更不用说传递该信息的方式了。
如果你有一个ComboBox,你可以这样做:
public partial class Confirmation : Form
{
private ComboBox comboBox1;
public void AddRange(object[] array)
{
comboBox1.Items.AddRange(array);
}
}
这不会将ComboBox放在表单的任何位置。你得把这个算出来。
完成后,我猜你需要编辑你的PlaceOrder_Click
例程:
private void PlaceOrder_Click(object sender, EventArgs e)
{
//new AreYouSure().Show();
//this.Show();
using (var obj = new Confirmation())
{
var list = new List<object>(MenuBox.Items.Count);
foreach (var o in MenuBox.Items)
{
list.Add(o);
}
obj.AddRange(list.ToArray());
if (obj.ShowDialog(this) == DialogResult.OK)
{
MenuBox.Items.Clear();
TotalBox.Items.Clear();
total.Items.Clear();
ordertotal = 0;
}
}
}
如果你在这方面挣扎,你可能需要看看一些c# Windows"多窗体"教程。
这是一个YouTube(我没有一直坐在那里):https://www.youtube.com/watch?v=qVVtCPDu9ZU