C# 将组合框作为参数传递给表单

C# 将组合框作为参数传递给表单,c#,winforms,combobox,C#,Winforms,Combobox,因此,我希望能够将组合框从一种形式传递到另一种形式,因为它是唯一保持不变的东西。当我这样做时,很好,有正确的项目,但是当我打开下拉列表时,没有项目,知道为什么吗?Hmmm,我不知道为什么,但您可能会尝试以下操作: 不只是传递整个组合框,只需传递上一个组合框中的项目,然后在您试图传递它的表单上创建一个新的组合框,然后用您以前作为参数传递的项目填充它。希望这有帮助 我现在尝试过这样做,它现在包含了应该包含的项目 foreach (var loc in locations.Items) Loc

因此,我希望能够将组合框从一种形式传递到另一种形式,因为它是唯一保持不变的东西。当我这样做时,很好,有正确的项目,但是当我打开下拉列表时,没有项目,知道为什么吗?

Hmmm,我不知道为什么,但您可能会尝试以下操作:
不只是传递整个组合框,只需传递上一个组合框中的项目,然后在您试图传递它的表单上创建一个新的组合框,然后用您以前作为参数传递的项目填充它。希望这有帮助

我现在尝试过这样做,它现在包含了应该包含的项目

foreach (var loc in locations.Items)
    Location_Selector.Items.Add(loc.ToString());

Location_Selector.SelectedIndex = locations.SelectedIndex;
但是仅仅将一个组合框设置为另一个组合框是不起作用的,这对我来说毫无意义

Location_Selector = locations;

传递这样的项目可能更容易:

        List<String> items = new List<string>();
        items.AddRange(comboBox1.Items.Cast<String>());
        int index = comboBox1.SelectedIndex;

        Form2 form2 = new Form2();
        form2.comboBox1.Items.AddRange(items.ToArray<object>());
        form2.comboBox1.SelectedIndex = index;
        form2.Show();
因此,您可以将这些项目添加到列表中,然后访问下一个表单上的组合框并将列表添加到其中。这也将复制所选索引。
您可以复制组合框,但更实际的做法是只复制项目。

为什么要将整个控件传递给另一个窗体?WinForms,我需要两个组合框在两个窗体中都相同,这似乎是确保它们相同的最佳方法,因为我需要项目相同如果您的编辑是正确的,请将其从问题中删除,并将其作为答案或评论发布。不要对答案提出疑问,这会误导未来的读者。