我正在创建一个事件来检查选项卡控件中的特定选项卡页面是否处于活动状态。
重点是,如果选项卡控件中的选项卡页是当前选中的选项卡,则会触发事件。有什么代码可以满足我的需要吗?
假设您正在 Winform 中查看,选项卡有一个
SelectedIndexChanged
事件
现在您可以在其中检查特定选项卡并继续执行逻辑
private void tab1_SelectedIndexChanged(object sender, EventArgs e)
{
if (tab1.SelectedTab == tab1.TabPages["tabname"])//your specific tabname
{
// your stuff
}
}
检查特定选项卡页面是否是选项卡控件当前选定的页面很容易;只需使用选项卡控件的 SelectedTab 属性即可:
if (tabControl1.SelectedTab == someTabPage)
{
// Do stuff here...
}
如果代码是基于某些事件而不是被选择的选项卡页执行的,这会更有用(在这种情况下,SelectedIndexChanged 将是更好的选择)。
例如,我有一个应用程序,它使用计时器定期通过 TCP/IP 连接轮询内容,但为了避免不必要的 TCP/IP 流量,我只轮询更新当前选定选项卡页面中的 GUI 控件的内容。
在.Net 4中可以使用
if (tabControl1.Controls[5] == tabControl1.SelectedTab)
MessageBox.Show("Tab 5 Is Selected");
或
if ( tabpage5 == tabControl1.SelectedTab)
MessageBox.Show("Tab 5 Is Selected");
无论出于何种原因,上述内容对我不起作用。这就是所做的:
if (tabControl.SelectedTab.Name == "tabName" )
{
.. do stuff
}
其中 tabControl.SelectedTab.Name 是分配给选项卡控件本身中的页面的名称属性。
我认为使用事件
tabPage1.Enter
更方便。
tabPage1.Enter += new System.EventHandler(tabPage1_Enter);
private void tabPage1_Enter(object sender, EventArgs e)
{
MessageBox.Show("you entered tabPage1");
}
当不同选项卡有不同的逻辑时,这比嵌套 if-else 语句更好。并且更适合将来添加新选项卡的情况。
请注意,如果加载表单并且默认打开
tabPage1
,则会触发此事件。
这也可以。
if (tabControl.SelectedTab.Text == "tabText" )
{
.. do stuff
}
VBA 如果 Me.TabCTL01.Pages(Me.TabCTL01.Value).Caption = "第 1 页" 那么 消息框“第1页” 结束如果