Помещаем элемент управления веб-браузером и панель инструментов в пользовательский элемент управления … не можем управлять ими из основной формы

#c# #winforms #user-controls #webbrowser-control

#c# #winforms #пользовательские элементы управления #webbrowser-control

Вопрос:

Я создаю простой веб-браузер на C #. Для того, чтобы все мои кнопки, такие как перейти, вперед, назад, кнопка обновления, вместе с вводом текстового поля на одной вкладке, я решил поместить панель инструментов и элемент управления веб-браузером в единый пользовательский элемент управления, который я создал. Это позволит мне просто перенести 1 элемент управления на вкладку. К сожалению, когда я пытаюсь использовать свой пользовательский элемент управления, это не работает. Я знаю, что мой код внутри пользовательского элемента управления в порядке, потому что, когда он был у меня в моей основной форме, он функционировал должным образом. Я думаю, что основная часть, которой мне не хватает, заключается в том, что я не понимаю, как правильно вызывать пользовательский элемент управления из основной формы. Может ли кто-нибудь направить меня в правильном направлении здесь?

Основная форма.

 namespace WebBrowser.UI
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

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

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

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

 namespace WebBrowser.UI
{
    public partial class adkinsBrowser : UserControl
    {
        public adkinsBrowser()
        {
            InitializeComponent();
        }

        private void toolStripTextBox1_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                webBrowser1.Navigate(toolStripTextBox1.Text.ToString());
            }
        }

        private void toolStripTextBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                e.SuppressKeyPress = true;
            }
        }

        private void toolStripButton5_Click(object sender, EventArgs e)
        {
            webBrowser1.Navigate(toolStripTextBox1.Text.ToString());
        }
    }
}
  

Комментарии:

1. Когда вы говорите «это не работает» , что именно не работает? Ввод и выключение клавиш? Если да, то a) вы уверены, что UserControl имеет фокус? б) Пробовали ли вы присвоить KeyPreview свойству Формы значение true? Подробнее в Как: Обрабатывать ввод с клавиатуры на уровне формы .

2. Что вы имеете в виду под правильным вызовом пользовательского элемента управления из основной формы ? Вы имеете в виду, что вы должны добавить этот элемент управления к элементам управления формы во время выполнения? Вам нужно, чтобы элемент управления возвращал некоторые значения в форму в какой-то момент?

3. У меня есть кнопка и клавиша ввода в качестве элементов управления. Вне пользовательского элемента управления они работают нормально, но когда я помещаю их в пользовательский элемент управления, они не отвечают.

4. Пользовательский элемент управления имеет свой собственный конструктор. Если вы хотите взаимодействовать с элементами управления внутри UC во время разработки, используйте конструктор UC. Во время выполнения все элементы управления ведут себя как обычно.

5. Я полагаю, что я сделал это со вторым блоком кода, который я опубликовал в моей первоначальной постановке задачи.