请,我在使用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天以来所做的那样。
答案 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();
}
那应该可以帮助您处理主要表单中的内容。