我在标签控件中有标签控件,如下所示:
我用3个SelectedIndexChanged
个事件,但我将它们合并为一个。
private void MaintabControler_SelectedIndexChanged(object sender, EventArgs e)
{
_currentGlobalTable = "None Selected";
string SelectedTab = tabControl1.SelectedTab.Name.ToString();
// Contacts_Table
if (SelectedTab == "mainTab1")
{
this.contacts_TableTableAdapter.Fill(this.nexusDBDataSet.Contacts_Table);
_currentGlobalBindingSource = contacts_TableBindingSource;
_currentGlobalTable = "Contacts_Table";
}
// CallRegister_Table
else if (SelectedTab == "mainTab2")
{...some more code here...
我正在使用代码动态更新数据集,datagridview和bindingNavigator。 问题是我不知道如何判断选项卡是否“假设显示”。我不知道它是父项还是子项tabControle。
private void MaintabControler_SelectedIndexChanged(object sender, EventArgs e)
{
SelectedTab = tabControl1.SelectedTab.Name.ToString();
if (SelectedTab == "mainTab1") \\ This is true, and its the tab that is "suppose" to show
SelectedTab = tabControl2.SelectedTab.Name.ToString();
if (SelectedTab == "subTab1") \\ This is true too so the incorrect data gets loaded to the datagrid
}
我想保留这一个事件,而不是恢复到之前的3个事件。主要是因为我可以在表单加载时调用该事件。但也将所有这些保留在一个咏叹调下并调用一个简单的刷新事件。
答案 0 :(得分:1)
如果我理解你的要求:
事件处理程序上的object sender
参数将包含触发事件的选项卡控件。将其强制转换为制表符控件,以了解您是在父级还是子级制表符控件事件中。
这样的事情:
TabControl currentControl = (TabControl)sender;
if (currentControl.Equals(tabControl1)
{
...
答案 1 :(得分:1)
您还可以像这样检查所选标签:
private void MaintabControler_SelectedIndexChanged(object sender, EventArgs e)
{
if (tab1.SelectedTab == tab1.TabPages["mainTab1"])
{
// your stuff
}
}