将列表框中的项添加到另一个表单的另一个列表框中

本文关键字:另一个 列表 表单 添加 | 更新日期: 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