Доступ к элементу управления вкладки из второй формы и вставка формы в элемент управления вкладки первой формы - PullRequest
0 голосов
/ 04 июля 2018

Пожалуйста, у меня возникла небольшая проблема при работе с 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 голосов
/ 04 июля 2018

Вы пробовали:

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);
       }
}

3-е окно формы или что-то еще:

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();
}

Это должно помочь вам манипулировать вещами для главной формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...