我正在使用WinForms的第一個C#和.NET項目上工作,因爲WPF對我們的目的來說是過分的。我創建了一個所謂的ButtonMenu,它包含所有菜單點,它們是按鈕。這個類是從Windows類Control派生的。如何通過WinForms中的自制控件創建事件?
ButtonMenu的其中一個按鈕是「文化」按鈕,在此單點觸摸應用程序中按下該按鈕時,應該更改應用程序所具有的所有表單的語言。
最初,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!
[…]
}
太糟糕了,你不使用WPF。這本來很容易。我只是部分地開玩笑並質疑你對WPF是「過度殺傷」的假設。 – CoderDennis