从第二个表单访问标签控件并将表单插入第一个表单标签控件

时间:2018-07-04 01:51:08

标签: c# winforms c#-4.0

请,我在使用tabControl时遇到了一个小问题。我有第一个窗体上的tabControl。最初,我在尝试从其他表单访问tabControl时遇到问题。但是后来我发现了一种解决方法,将设计师中控件的可访问性从私有更改为公共。 但是,当我尝试从标签内显示时,它不起作用。但是从第一种形式开始,我就可以轻松地将其他形式放到标签页中,因为我在那里有控件。从另一种形式来看,我遇到了困难。

这是试图从数据库搜索数据的代码

patient selectUser = new patient();
        //Get Selected Patient based on end user click from the DataGridView
        public patient GetSelectedUser()
        {
            if (dataGridView1.CurrentRow.Index != -1)
            {
                selectUser.patient_id = Convert.ToInt32(dataGridView1.CurrentRow.Cells["patient_id"].Value);

                using (DbModel db = new DbModel ())
                {
                    selectUser = db.patients.FirstOrDefault(u => u.patient_id == selectUser.patient_id);
                }
            }
            return selectUser;
        }

这是试图将表格包含在tabcontrol中的代码。

StartPage sp = new StartPage();

    private void LoadSelectedUser()
    {
        patient patient = GetSelectedUser();
        if (patient == null)
        {
            MessageBox.Show("cannot load data");
        }
        else
        {

            //Close();
            //StartPage.tt = "";
            //PatientDashboard pd = new PatientDashboard(patient);
            //pd.Show();


            Close();
            PatientDashboard pd = new PatientDashboard(patient);

            TabPage tabpage = new TabPage();
            tabpage.Text = pd.Text;
            sp.tabControl1.TabPages.Add(tabpage);
            pd.TopLevel = false;
            pd.Parent = tabpage;
            pd.Show();
            pd.Dock = DockStyle.Fill;
            sp.tabControl1.SelectedTab = tabpage;
            pd.Show();

        }
    }

我注意到表单的TopLevel属性使该表单不显示。 衷心感谢您的协助,就像我在这2天以来所做的那样。

1 个答案:

答案 0 :(得分:0)

您尝试过吗:

tabpage.Controls.Add(pd)

更新

program.cs

public static Form1 from;  //<--- important
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
       Application.EnableVisualStyles();
       Application.SetCompatibleTextRenderingDefault(false);
       using (Form1 mainForm = new Form1())
       {
           from = mainForm;

           Application.Run(from);
       }
}

第三个表单窗口或其他任何内容

private void button1_Click(object sender, EventArgs e)
{

    Form2 f2 = new Form2();

    TabPage tabpage = new TabPage();
    tabpage.Text = f2.Text;
    Program.from.tabControl1.TabPages.Add(tabpage);
    f2.TopLevel = false;
    f2.Parent = tabpage;
    f2.Dock = DockStyle.Fill;
    Program.from.tabControl1.SelectedTab = tabpage;
    f2.Show();
}

那应该可以帮助您处理主要表单中的内容。