#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. Я полагаю, что я сделал это со вторым блоком кода, который я опубликовал в моей первоначальной постановке задачи.