我正在使用TabControl并将TabPages附加到TabControl,但在使其中一个TabPages响应事件时遇到问题。这让我觉得我遗漏了一些关于这些类之间关系的东西,所以我希望能得到一些帮助。我想将一些TabPage对象添加到TabControl中,并且对于其中一个(添加的第一个),我想向它发送一个事件,让它做一些事情。
下面是基本代码:
/* tabControl is a TabControl object, and
tabNames is a string array */
bool first = true;
foreach (string tabName in tabNames)
{
TabPage tabPage = CreateTabPage(tabName);
tabControl.Controls.Add(tabPage);
if (first)
{
methodTabPage.Select();
first = false;
}
}
private TabPage CreateTabPage(String name)
{
TabPage tabPage = new TabPage(name);
tabPage.Enter += new EventHandler(MethodTab_Entered);
return tabPage;
}
private void MethodTab_Entered(object sender, EventArgs e)
{
DoSomething();
}据我所知,当我运行这段代码时,DoSomething()从未被调用过。我尝试了各种方法,比如Click事件,等等,但都不能按预期工作。我遗漏了什么?
谢谢,马丁
发布于 2015-10-21 09:32:25
这对我来说很好用:
public partial class TabPageForm : Form
{
private List<string> tabNames;
public TabPageForm()
{
InitializeComponent();
tabNames = new List<string>();
tabNames.Add("NewTab");
}
private void button1_Click(object sender, EventArgs e)
{
bool first = true;
foreach (string tabName in tabNames)
{
TabPage tabPage = CreateTabPage(tabName);
methodTabPage.Controls.Add(tabPage);
if (first)
{
methodTabPage.Select();
first = false;
}
}
}
private TabPage CreateTabPage(String name)
{
TabPage tabPage = new TabPage(name);
tabPage.Enter += new EventHandler(MethodTab_Entered);
return tabPage;
}
private void MethodTab_Entered(object sender, EventArgs e)
{
DoSomething();
}
private void DoSomething()
{
throw new NotImplementedException();
}
}当我进入新创建的选项卡时,会调用DoSomething。
当然,first变量的逻辑可能不是您想要的,所以如果您可以澄清它的语义,我可以更新我的代码片段。
干杯
https://stackoverflow.com/questions/33249427
复制相似问题