Я работаю над своим первым проектом на C # и .NET, который использует WinForms, так как WPF был бы излишним для наших целей.Я создал так называемое ButtonMenu, которое включает в себя все пункты меню, которые являются кнопками.Этот класс является производным от класса управления Windows.
Одной из кнопок ButtonMenu является кнопка «Культура», которая при нажатии в этом приложении с одним касанием должна изменять язык всех форм приложения.has.
Изначально ButtonMenu был просто своего рода классом наложения, который обращался к элементам управления BaseForm и содержал методы.BaseForm держал кнопки внутри собственного GroupBox.Позже я столкнулся с проблемами такого рода дизайна и решил сделать из него отдельный элемент управления.
Мой вопрос Как я могу создать событие (или что-то подобное), которое может быть перехвачено BaseForm,где находится ButtonMenu?BaseForm в настоящее время не может реагировать на это событие и не может изменить язык всех своих собственных элементов управления, таких как текстовые поля и кнопки.
Спасибо за вашу помощь!
То, что я пробовал до сих пор, показано ниже.К сожалению, я не могу добраться до отмеченной линии.
public class BaseForm : Form
{
[…]
protected static ButtonMenu m_ButtonMenu = null;
protected override void OnResize(EventArgs e)
{
[…]
m_ButtonMenu = ButtonMenu.GetInstance(m_CurrentCulture, Size);
m_ButtonMenu.Visible = true;
[…]
}
public override void UpdateWidgets()
{
[…]
try
{
[…]
// Translate button menu into current language:
m_ButtonMenu.AdaptButtons(m_CurrentCulture);
}
catch (ArgumentOutOfRangeException aaore)
{
[…]
[…]
}
protected void InitializeWidgets()
{
{
string strMethod = Name + ":InitializeWidgets(): ";
m_ButtonMenu = ButtonMenu.GetInstance(m_CurrentCulture, Size);
SuspendLayout();
Controls.Add(m_ButtonMenu);
m_ButtonMenu.Top = Height - m_ButtonMenu.Height;
ResumeLayout();
[…]
m_ButtonMenu.Click += new System.EventHandler(this.ButtonMenu_CultureClick);
}
private void ButtonMenu_CultureClick(object sender, EventArgs eas)
{
int iSelection = listViewMessages.SelectedIndices[0]; // <<<<< NEVER REACHED!
[…]
}