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

时间:2015-10-15 12:31:12

标签: c# forms listbox add

这是我的代码。

private void PlaceOrder_Click(object sender, EventArgs e)
{
    MenuBox.Items.Clear();
    TotalBox.Items.Clear();
    total.Clear();
    ordertotal = 0;
}

我想将菜单框中的内容添加到另一个表单上的另一个列表框中。

更新

(由jp2code添加)

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

3 个答案:

答案 0 :(得分:0)

OtherForm.OtherListbox.Items.Clear(); 
foreach(var itm in MenuBox.Items)
    OtherForm.OtherListbox.Items.Add(itm);

答案 1 :(得分:0)

最好将其他表单上的控件(在本例中为ListBox)默认设置为Private。

在这种情况下,您需要将控件的可见性设置为Public(在我看来是错误的表单),或者在您的其他表单中创建一个方法来接受表单中的参数。

考虑这样的事情:

public void ListBoxData(object[] array)
{
  listBox1.Clear();
  listBox1.AddRange(array);
}

要将数据或所选项目信息恢复到主表单,您还可以创建另一个可以检查的公共对象,如下面的属性:

public object SelectedItem { get { return listBox1.SelectedItem; } }

我希望这就是你要找的东西。

UPDATE:

使用您在下面的帖子中提供的代码,我发现您的确认表单中没有任何内容可以发送数据,更不用说传递信息了。

如果您有 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

答案 2 :(得分:0)

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中“MenuBox”中的项目需要发送到表单2中的“MenuBox”