c#tabpage问题(禁用标题/点击事件)

时间:2015-07-13 21:22:31

标签: c# tabcontrol

我以为我有这个,但没有。我有一个5页的tabcontrol。我有它,所以当我点击tabpage4(“库存”)空白区域时,它会向datagridview和富文本框添加内容。这仅在我单击页面本身时发生,并且在每次后续单击时都会重复。我需要知道......

- 当我点击标签而不是页面本身时,有没有办法做某事? - 我可以这样做,你只能点击一次标签,以防止重复吗?

我查看了第二个问题,但它们都禁用了整个页面 - 我需要仍然能够使用页面内的控件。

我有;

awk -F '^[^,]*,[^,]*, [[]?|]' '{print $2}'

由于

2 个答案:

答案 0 :(得分:0)

您应该听取的正确方法是SelectedIndexChanged

private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
    MessageBox.Show("Hey!");
}

即使您使用键盘快捷键,每次更改标签页时都会被触发,即使您使用键盘快捷键也是如此。

现在,您可以通过查看SelectedTab属性

来获取所选标签页
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
    MessageBox.Show("You are viewing " + tabControl1.SelectedTab.Name);
}

最后,您只想运行一次函数,因此您必须记住是否已经运行了代码。您可以创建许多变量,也可以只使用Tag属性(可以存储您想要的任何内容):

private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (tabControl1.SelectedTab.Tag == null)
    {
        tabControl1.SelectedTab.Tag = true; //set to true so no longer evaluates to null
        MessageBox.Show("You are viewing " + tabControl1.SelectedTab.Name);
    }
    else
    {
        MessageBox.Show("Sorry, can't run twice.");
    }
}

希望这有帮助!

PS:您可以在switch:)

中使用if语句

答案 1 :(得分:0)

如果您想要动态地将对话框附加到标签页,您可以使用选择事件来执行此操作,通过单击选项卡并在显示标签页之前触发:

    GRANT REFERENCES ON CONTRACT::[http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification] TO [SqlUser];

    -- for Start()
    GRANT CREATE PROCEDURE to [SqlUser];
    GRANT CREATE QUEUE to [SqlUser];
    GRANT CREATE SERVICE to [SqlUser];
    GRANT VIEW DEFINITION TO [SqlUser];

    -- for subscribe
    GRANT SUBSCRIBE QUERY NOTIFICATIONS TO [SqlUser];
    GRANT RECEIVE ON QueryNotificationErrorsQueue TO [SqlUser];