C#多个表格和面板

时间:2014-01-13 17:53:19

标签: c# forms controls panel

我设置了一个主屏幕,它的主体由一个巨型面板组成。然后我有一系列用户控件被删除或加载到主屏幕。我不知道该怎么做才能让用户控件影响主屏幕。

用户控件的代码示例:

PartsSystem parts = new PartsSystem(); //a user control
MainMenu.pnlMain.Controls.Clear();
MainMenu.pnlMain.Controls.Add(parts);

此代码在加载主屏幕时有效,但我似乎无法从其他用户控件访问pnlMain。有可能解决这个问题吗?我有一个函数设置为在MainMenu表单中获取用户控件,但我似乎无法从用户控件中调用它。我试图这样做,以便当他们点击一个按钮时,他们会转到下一个屏幕(用户控件)。

我在Windows 7上使用C#和Visual Studio 2010以及所有默认设置。

以下是一些其他代码示例:

public partial class Main_Menu : Form
{
    public Main_Menu()
    {
        InitializeComponent();
        MainMenuPanel main = new MainMenuPanel();
        panelChange(main);
    }

    public void panelChange(UserControl newPanel)
    {
        pnlMain.Controls.Clear();
        pnlMain.Controls.Add(newPanel);
    }

}

那是Main_Menu。此代码适用于启动。现在,提出我的PartsSystem是另一个问题。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Program_v1._0._0._0._4
{
public partial class MainMenuPanel : UserControl
{
    public MainMenuPanel()
    {
        InitializeComponent();
        Main_Menu parentForm = (this.Parent as Main_Menu);

    }

   public void btnPartsInventory_Click(object sender, EventArgs e)
    {
        Main_Menu myParent = (this.Parent as Main_Menu);
        PartsSystem parts = new PartsSystem();
        myParent.pnlMain.Controls.Clear(); //Object reference not set to an instance of an object.
 //This is the error I get at this point. It won't let me use the function.
        myParent.pnlMain.Controls.Add(parts); 

    }

}

}

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)