WinFormsアプリケーションでプレゼンターパターンを監視するMVPを使用しています。TabControl
といくつかのTabPage
sを持つビューがあります。ビュー全体にデータを入力しようとすると顕著な遅延が発生するため、選択した各タブページのコンテンツを遅延ロードする必要があります。
TabPage.GotFocusイベントにフックして、特定のタブが選択されたときにハンドラーを提供したいと思っていましたが、それは機能していないようです。TabControl.SelectedIndexChanged
そのため、これを機能させるには、イベントとswitchステートメントを使用する必要がありました。switchステートメントを入れなければならないのは本当に苦痛です。switchステートメントを回避する方法はありますか?
public partial class Form1 : Form
{
public event EventHandler TabPage1Selected;
public event EventHandler TabPage2Selected;
public event EventHandler TabPage3Selected;
public Form1()
{
InitializeComponent();
this.tabControl1.SelectedIndexChanged += tabControl1_SelectedIndexChanged;
this.tabPage1.GotFocus += tabPage1_GotFocus; //Doesn't work!
}
private void tabPage1_GotFocus(object sender, EventArgs e)
{
Debug.WriteLine("event fired for tabpage1");
}
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
Debug.WriteLine("Raising tab selected event");
EventHandler h = null;
switch (this.tabControl1.SelectedIndex)
{
case 0:
h = this.TabPage1Selected;
break;
case 1:
h = this.TabPage2Selected;
break;
case 2:
h = this.TabPage3Selected;
break;
default:
break;
}
if (h != null) h(this, new EventArgs());
}
}