Моя новая кнопка вкладки только помещает мой пользовательский контроль в первую новую вкладку, но остальные остаются пустыми - PullRequest
0 голосов
/ 06 февраля 2019

Я довольно новичок в программировании и работал над созданием веб-браузера в visual studio, но столкнулся с проблемой, которую не могу понять.У меня есть форма, в которой хранится моя строка меню и табуляция.Затем я создал пользовательский элемент управления, который содержит мою панель инструментов и веб-браузер.Затем я добавил свой пользовательский элемент управления внутри моей вкладки в форме.Моя проблема в том, что когда я нажимаю кнопку, чтобы создать новую вкладку, первая новая вкладка является правильной, она имеет мой пользовательский контроль, но каждая новая вкладка после этого пуста.Как я могу сделать так, чтобы каждая новая вкладка открывала мой usercontrol?Вот код, который у меня есть.

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

    namespace WebBrowser.UI
    {
        public partial class Nnocu : Form
        {
            WebControls WebControls = new WebControls();

            public Nnocu()
            {
                InitializeComponent();
            }


            private void Nnocu_Load(object sender, EventArgs e)
            {

            }

            private void exitWebBrowserToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Application.Exit();
            }

            private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
            {
                MessageBox.Show("");
            }


            private void Navigation()
            {
                string web = null;
                WebControls.navigationTextBox.Text = web;               
                WebControls.webBrowser1.Navigate(web);
            }


            private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {

            }

            private void Nnocu_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.Control && (e.KeyCode == Keys.T))
                    addTab();

                if (e.Control && (e.KeyCode == Keys.W))
                    this.tabControl1.TabPages.RemoveAt(this.tabControl1.SelectedIndex);
            }



            private void newTabToolStripMenuItem_Click(object sender, EventArgs e)
            {
                addTab();

            }

            private void addTab()
            {


                TabPage tabPage = new TabPage();
                tabPage.Text = "New Tab";
                tabControl1.Controls.Add(tabPage);
                WebControls.Parent = tabPage;
                WebControls.Dock = DockStyle.Fill;
                WebControls.webBrowser1.Navigate("www.google.com");


            }



            private void closeCurrentTabToolStripMenuItem_Click(object sender, EventArgs e)
            {
                tabControl1.TabPages.RemoveAt(this.tabControl1.SelectedIndex);
            }
        }
    }

И мой пользовательский элемент управления

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

namespace WebBrowser.UI
{
    public partial class WebControls : UserControl
    {

            public WebControls()
        {
            InitializeComponent();
        }

        private void goButton_Click(object sender, EventArgs e)
        {
            try
            {
                webBrowser1.Navigate(navigationTextBox.Text);
            }
            catch (Exception ex)
            {
                // Error message for an invalid Web Address.
                MessageBox.Show(ex.Message);
            }
        }

        private void navigationTextBox_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                try
                {
                    webBrowser1.Navigate(navigationTextBox.Text);
                }
                catch (Exception ex)
                {
                    // Error message for an invalid Web Address.
                    MessageBox.Show(ex.Message);
                }
            }
        }

        private void refreshButton_Click(object sender, EventArgs e)
        {
            webBrowser1.Refresh();
        }

    }
}

1 Ответ

0 голосов
/ 06 февраля 2019

Хорошо ли я понимаю, что вы хотите добавить свой UserControl в новую созданную вами вкладку?Затем вам нужно добавить свой UserControl в элементы управления вашей новой вкладки:

private void addTab()
{
      TabPage tabPage = new TabPage();
      tabPage.Text = "New Tab";
      WebControl wc = new WebControl();
      wc.Dock = DockStyle.Fill;
      wc.webBrowser1.Navigate("www.google.com");
      tabPage.Controls.Add(wc);
      tabControl1.Controls.Add(tabPage);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...