以两种形式显示相同的组合框

时间:2017-03-20 06:02:11

标签: c# winforms combobox

我找不到与此类似的东西,我在主窗口窗体中有一个组合框,我想将相同的组合框传递给另一个窗体并在那里更改它的值,以便在主窗口中更改它相应

我不熟悉C#道歉因为无知,我尝试了以下内容:

在主窗口中:

private void companiesToolStripMenuItem_Click(object sender, EventArgs e)
{
    ModifyCompanies childForm = new ModifyCompanies(this);
    childForm.ShowDialog();
}

第二种形式: 我已经构建了一个构造函数,并认为它可以工作,但即使它是相同的组合框,项目也不会显示。

public ModifyCompanies(MainWindow mainWindow)
{
    this.mainWindow = mainWindow;
    InitializeComponent();
    comboBox1 = mainWindow.companyComboBox;
}

1 个答案:

答案 0 :(得分:2)

将控件传递给不同的形式可能是一个坏主意,我建议在表单之间共享数据,如下例所示:

public class SharedData
{
    public List<string> TestData { get; set; } 

    public SharedData()
    {
        TestData = new List<string>();
    }
}

在你的课程班中:

class Program
{
    public static SharedData Shared {get; set;}

    [STAThread]
    static void Main()
    {
        Shared = new SharedData();

        Shared.TestData.Add("test1");
        Shared.TestData.Add("test2");
        Shared.TestData.Add("test3");

        System.Windows.Forms.Application.EnableVisualStyles();
        System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false);
        System.Windows.Forms.Application.Run(new Form1());
    }
}

在表格中,它会是这样的:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        comboBox1.DataSource = Program.Shared.TestData;
    }
}

其他形式将是相同的,您可以操纵两个表格中的数据,并且两个表格的数据都会更新。

希望这很有用。